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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
