lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <201910130112.jaK51EVz%lkp@intel.com>
Date:   Sun, 13 Oct 2019 01:22:16 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Ilya Dryomov <idryomov@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: drivers//block/rbd.c:2124:21: warning: 'current_state' may be used
 uninitialized in this function

Hi Ilya,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   1c0cc5f1ae5ee5a6913704c0d75a6e99604ee30a
commit: 22e8bd51bb0469d1a524130a057f894ff632376a rbd: support for object-map and fast-diff
date:   3 months ago
config: x86_64-randconfig-a001-201941 (attached as .config)
compiler: gcc-6 (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
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@...el.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

Download attachment ".config.gz" of type "application/gzip" (29668 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ