From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Date: Wed, 14 Dec 2016 11:58:44 +0300 Subject: [Cluster-devel] [bug report] GFS2: Use resizable hash table for glocks Message-ID: <20161214085844.GA10659@elgon.mountain> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello Bob Peterson, The patch 88ffbf3e037e: "GFS2: Use resizable hash table for glocks" from Mar 16, 2015, leads to the following static checker warning: fs/gfs2/glock.c:1813 gfs2_glock_iter_next() error: 'gi->gl' dereferencing possible ERR_PTR() fs/gfs2/glock.c 1803 static void gfs2_glock_iter_next(struct gfs2_glock_iter *gi) 1804 { 1805 do { 1806 gi->gl = rhashtable_walk_next(&gi->hti); 1807 if (IS_ERR(gi->gl)) { 1808 if (PTR_ERR(gi->gl) == -EAGAIN) 1809 continue; This continue was probably intended to go to the top of the loop, but it's a do while loop so it actually drops down 1810 gi->gl = NULL; 1811 } 1812 /* Skip entries for other sb and dead entries */ 1813 } while ((gi->gl) && ((gi->sdp != gi->gl->gl_name.ln_sbd) || ^^^^^^^^ to here where we dereference gi->gl. It's weird that Smatch is only complaining about this now though... 1814 __lockref_is_dead(&gi->gl->gl_lockref))); 1815 } regards, dan carpenter