From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Date: Sat, 24 Jan 2015 22:45:03 +0300 Subject: [Cluster-devel] GFS2: Move most of the remaining inode.c into ops_inode.c Message-ID: <20150124194503.GA22383@mwanda> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello Steven Whitehouse, The [some really old patch], leads to the following static checker warning: fs/gfs2/inode.c:203 gfs2_inode_lookup() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c 167 set_bit(GIF_INVALID, &ip->i_flags); 168 error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It looks like this function can return GLR_TRYFAILED. The caller is only expecting normal ERR_PTRs so it could cause an oops. 169 if (unlikely(error)) 170 goto fail_iopen; 171 172 ip->i_iopen_gh.gh_gl->gl_object = ip; 173 gfs2_glock_put(io_gl); 174 io_gl = NULL; 175 176 if (type == DT_UNKNOWN) { 177 /* Inode glock must be locked already */ 178 error = gfs2_inode_refresh(GFS2_I(inode)); 179 if (error) 180 goto fail_refresh; 181 } else { 182 inode->i_mode = DT2IF(type); 183 } 184 185 gfs2_set_iop(inode); 186 unlock_new_inode(inode); 187 } 188 189 return inode; 190 191 fail_refresh: 192 ip->i_iopen_gh.gh_flags |= GL_NOCACHE; 193 ip->i_iopen_gh.gh_gl->gl_object = NULL; 194 gfs2_glock_dq_uninit(&ip->i_iopen_gh); 195 fail_iopen: 196 if (io_gl) 197 gfs2_glock_put(io_gl); 198 fail_put: 199 ip->i_gl->gl_object = NULL; 200 gfs2_glock_put(ip->i_gl); 201 fail: 202 iget_failed(inode); 203 return ERR_PTR(error); 204 } Related: fs/gfs2/inode.c:203 gfs2_inode_lookup() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:218 gfs2_lookup_by_inum() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:243 gfs2_lookup_by_inum() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:306 gfs2_lookupi() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:324 gfs2_lookupi() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:852 __gfs2_lookup() error: passing non negative 13 to ERR_PTR fs/gfs2/inode.c:1567 gfs2_follow_link() error: passing non negative 13 to ERR_PTR regards, dan carpenter