CC: [email protected]
TO: Kees Cook <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git 
kspp/uninit/macro
head:   806e8c03bcab6ac1f1ea142980de222fa021a75c
commit: fc9fcebe481c0e849a8141281411613eae76bd29 [9/10] treewide: Remove 
uninitialized_var() usage
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: x86_64-randconfig-m001-20200604 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/virtio/virtio_ring.c:1197 virtqueue_add_packed() error: uninitialized 
symbol 'prev'.
drivers/virtio/virtio_ring.c:1205 virtqueue_add_packed() error: uninitialized 
symbol 'head_flags'.
drivers/virtio/virtio_ring.c:508 virtqueue_add_split() error: uninitialized 
symbol 'prev'.

# 
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?id=fc9fcebe481c0e849a8141281411613eae76bd29
git remote add kees 
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git
git remote update kees
git checkout fc9fcebe481c0e849a8141281411613eae76bd29
vim +/prev +1197 drivers/virtio/virtio_ring.c

1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1090  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1091  static inline int 
virtqueue_add_packed(struct virtqueue *_vq,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1092                                      
struct scatterlist *sgs[],
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1093                                      
unsigned int total_sg,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1094                                      
unsigned int out_sgs,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1095                                      
unsigned int in_sgs,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1096                                      
void *data,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1097                                      
void *ctx,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1098                                      
gfp_t gfp)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1099  {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1100       struct vring_virtqueue *vq = 
to_vvq(_vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1101       struct vring_packed_desc *desc;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1102       struct scatterlist *sg;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1103       unsigned int i, n, c, 
descs_used, err_idx;
fc9fcebe481c0e Kees Cook 2020-06-03  1104       __le16 head_flags, flags;
fc9fcebe481c0e Kees Cook 2020-06-03  1105       u16 head, id, prev, curr, 
avail_used_flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1106  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1107       START_USE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1108  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1109       BUG_ON(data == NULL);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1110       BUG_ON(ctx && vq->indirect);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1111  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1112       if (unlikely(vq->broken)) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1113               END_USE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1114               return -EIO;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1115       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1116  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1117       LAST_ADD_TIME_UPDATE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1118  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1119       BUG_ON(total_sg == 0);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1120  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1121       if (virtqueue_use_indirect(_vq, 
total_sg))
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1122               return 
virtqueue_add_indirect_packed(vq, sgs, total_sg,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1123                               
out_sgs, in_sgs, data, gfp);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1124  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1125       head = 
vq->packed.next_avail_idx;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1126       avail_used_flags = 
vq->packed.avail_used_flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1127  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1128       WARN_ON_ONCE(total_sg > 
vq->packed.vring.num && !vq->indirect);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1129  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1130       desc = vq->packed.vring.desc;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1131       i = head;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1132       descs_used = total_sg;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1133  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1134       if (unlikely(vq->vq.num_free < 
descs_used)) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1135               pr_debug("Can't add buf 
len %i - avail = %i\n",
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1136                        descs_used, 
vq->vq.num_free);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1137               END_USE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1138               return -ENOSPC;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1139       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1140  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1141       id = vq->free_head;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1142       BUG_ON(id == 
vq->packed.vring.num);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1143  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1144       curr = id;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1145       c = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1146       for (n = 0; n < out_sgs + 
in_sgs; n++) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1147               for (sg = sgs[n]; sg; 
sg = sg_next(sg)) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1148                       dma_addr_t addr 
= vring_map_one_sg(vq, sg, n < out_sgs ?
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1149                                       
DMA_TO_DEVICE : DMA_FROM_DEVICE);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1150                       if 
(vring_mapping_error(vq, addr))
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1151                               goto 
unmap_release;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1152  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1153                       flags = 
cpu_to_le16(vq->packed.avail_used_flags |
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1154                                   
(++c == total_sg ? 0 : VRING_DESC_F_NEXT) |
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1155                                   (n 
< out_sgs ? 0 : VRING_DESC_F_WRITE));
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1156                       if (i == head)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1157                               
head_flags = flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1158                       else
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1159                               
desc[i].flags = flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1160  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1161                       desc[i].addr = 
cpu_to_le64(addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1162                       desc[i].len = 
cpu_to_le32(sg->length);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1163                       desc[i].id = 
cpu_to_le16(id);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1164  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1165                       if 
(unlikely(vq->use_dma_api)) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1166                               
vq->packed.desc_extra[curr].addr = addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1167                               
vq->packed.desc_extra[curr].len = sg->length;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1168                               
vq->packed.desc_extra[curr].flags =
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1169                                       
le16_to_cpu(flags);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1170                       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1171                       prev = curr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1172                       curr = 
vq->packed.desc_state[curr].next;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1173  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1174                       if 
((unlikely(++i >= vq->packed.vring.num))) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1175                               i = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1176                               
vq->packed.avail_used_flags ^=
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1177                                       
1 << VRING_PACKED_DESC_F_AVAIL |
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1178                                       
1 << VRING_PACKED_DESC_F_USED;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1179                       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1180               }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1181       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1182  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1183       if (i < head)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1184               
vq->packed.avail_wrap_counter ^= 1;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1185  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1186       /* We're using some buffers 
from the free list. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1187       vq->vq.num_free -= descs_used;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1188  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1189       /* Update free pointer */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1190       vq->packed.next_avail_idx = i;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1191       vq->free_head = curr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1192  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1193       /* Store token. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1194       vq->packed.desc_state[id].num = 
descs_used;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1195       vq->packed.desc_state[id].data 
= data;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1196       
vq->packed.desc_state[id].indir_desc = ctx;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 @1197       vq->packed.desc_state[id].last 
= prev;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1198  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1199       /*
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1200        * A driver MUST NOT make the 
first descriptor in the list
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1201        * available before all 
subsequent descriptors comprising
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1202        * the list are made available.
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1203        */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1204       virtio_wmb(vq->weak_barriers);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 @1205       
vq->packed.vring.desc[head].flags = head_flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1206       vq->num_added += descs_used;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1207  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1208       pr_debug("Added buffer head %i 
to %p\n", head, vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1209       END_USE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1210  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1211       return 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1212  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1213  unmap_release:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1214       err_idx = i;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1215       i = head;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1216  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1217       vq->packed.avail_used_flags = 
avail_used_flags;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1218  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1219       for (n = 0; n < total_sg; n++) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1220               if (i == err_idx)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1221                       break;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1222               
vring_unmap_desc_packed(vq, &desc[i]);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1223               i++;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1224               if (i >= 
vq->packed.vring.num)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1225                       i = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1226       }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1227  
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1228       END_USE(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1229       return -EIO;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1230  }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21  1231  

:::::: The code at line 1197 was first introduced by commit
:::::: 1ce9e6055fa0a9043405c5604cf19169ec5379ff virtio_ring: introduce packed 
ring support

:::::: TO: Tiwei Bie <[email protected]>
:::::: CC: David S. Miller <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to