Messages in this thread | | | Date | Fri, 30 Aug 2019 17:31:13 +0800 | From | kbuild test robot <> | Subject | drivers/block/rbd.c:2124:21: warning: 'current_state' may be used uninitialized in this function |
| |
tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git master head: 26538100499460ee81546a0dc8d6f14f5151d427 commit: 22e8bd51bb0469d1a524130a057f894ff632376a rbd: support for object-map and fast-diff date: 8 weeks ago config: x86_64-randconfig-s1-08301454 (attached as .config) compiler: gcc-7 (Debian 7.4.0-11) 7.4.0 reproduce: git checkout 22e8bd51bb0469d1a524130a057f894ff632376a # save the attached .config to linux build tree make ARCH=x86_64
If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com>
Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
All warnings (new ones prefixed by >>):
drivers/block/rbd.c: In function 'rbd_object_map_callback': >> drivers/block/rbd.c:2124:21: warning: 'current_state' may be used uninitialized in this function [-Wmaybe-uninitialized] (current_state == OBJECT_EXISTS && state == OBJECT_EXISTS_CLEAN)) drivers/block/rbd.c:2092:23: note: 'current_state' was declared here u8 state, new_state, current_state; ^~~~~~~~~~~~~
vim +/current_state +2124 drivers/block/rbd.c
2075 2076 /* 2077 * This function needs snap_id (or more precisely just something to 2078 * distinguish between HEAD and snapshot object maps), new_state and 2079 * current_state that were passed to rbd_object_map_update(). 2080 * 2081 * To avoid allocating and stashing a context we piggyback on the OSD 2082 * request. A HEAD update has two ops (assert_locked). For new_state 2083 * and current_state we decode our own object_map_update op, encoded in 2084 * rbd_cls_object_map_update(). 2085 */ 2086 static int rbd_object_map_update_finish(struct rbd_obj_request *obj_req, 2087 struct ceph_osd_request *osd_req) 2088 { 2089 struct rbd_device *rbd_dev = obj_req->img_request->rbd_dev; 2090 struct ceph_osd_data *osd_data; 2091 u64 objno; 2092 u8 state, new_state, current_state; 2093 bool has_current_state; 2094 void *p; 2095 2096 if (osd_req->r_result) 2097 return osd_req->r_result; 2098 2099 /* 2100 * Nothing to do for a snapshot object map. 2101 */ 2102 if (osd_req->r_num_ops == 1) 2103 return 0; 2104 2105 /* 2106 * Update in-memory HEAD object map. 2107 */ 2108 rbd_assert(osd_req->r_num_ops == 2); 2109 osd_data = osd_req_op_data(osd_req, 1, cls, request_data); 2110 rbd_assert(osd_data->type == CEPH_OSD_DATA_TYPE_PAGES); 2111 2112 p = page_address(osd_data->pages[0]); 2113 objno = ceph_decode_64(&p); 2114 rbd_assert(objno == obj_req->ex.oe_objno); 2115 rbd_assert(ceph_decode_64(&p) == objno + 1); 2116 new_state = ceph_decode_8(&p); 2117 has_current_state = ceph_decode_8(&p); 2118 if (has_current_state) 2119 current_state = ceph_decode_8(&p); 2120 2121 spin_lock(&rbd_dev->object_map_lock); 2122 state = __rbd_object_map_get(rbd_dev, objno); 2123 if (!has_current_state || current_state == state || > 2124 (current_state == OBJECT_EXISTS && state == OBJECT_EXISTS_CLEAN)) 2125 __rbd_object_map_set(rbd_dev, objno, new_state); 2126 spin_unlock(&rbd_dev->object_map_lock); 2127 2128 return 0; 2129 } 2130
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [unhandled content-type:application/gzip] | |