CC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Andreas Gruenbacher <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   34f255a1e91ab44ff8926cf8294ff9144e62e861
commit: cfdb9692082c42515edc5a921481826a1573d329 [3660/4301] gfs2: Rework 
gfs2_inode_lookup
:::::: branch date: 2 hours ago
:::::: commit date: 22 hours ago
config: powerpc64-randconfig-m031-20211129 
(https://download.01.org/0day-ci/archive/20211130/[email protected]/config)
compiler: powerpc64-linux-gcc (GCC) 11.2.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]>

New smatch warnings:
fs/gfs2/inode.c:192 gfs2_inode_lookup() error: we previously assumed 'gl' could 
be null (see line 169)

Old smatch warnings:
fs/gfs2/inode.c:343 gfs2_lookupi() warn: passing zero to 'ERR_PTR'

vim +/gl +192 fs/gfs2/inode.c

cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29   91  
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09   92  /**
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09   93   * 
gfs2_inode_lookup - Lookup an inode
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09   94   * @sb: 
The super block
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09   95   * 
@type: The type of the inode
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14   96   * 
@no_addr: The inode number
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14   97   * 
@no_formal_ino: The inode generation number
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14   98   * 
@blktype: Requested block type (GFS2_BLKST_DINODE or GFS2_BLKST_UNLINKED;
61b91cfdc6c0c4 fs/gfs2/inode.c     Andreas Gruenbacher 2017-08-01   99   *      
     GFS2_BLKST_FREE to indicate not to verify)
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  100   *
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  101   * If 
@type is DT_UNKNOWN, the inode type is fetched from disk.
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  102   *
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  103   * If 
@blktype is anything other than GFS2_BLKST_FREE (which is used as a
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  104   * 
placeholder because it doesn't otherwise make sense), the on-disk block type
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  105   * is 
verified to be @blktype.
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  106   *
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  107   * When 
@no_formal_ino is non-zero, this function will return ERR_PTR(-ESTALE)
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  108   * if 
it detects that @no_formal_ino doesn't match the actual inode generation
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  109   * 
number.  However, it doesn't always know unless @type is DT_UNKNOWN.
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  110   *
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  111   * 
Returns: A VFS inode, or an error
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  112   */
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  113  
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  114  struct 
inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type,
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  115          
                        u64 no_addr, u64 no_formal_ino,
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  116          
                        unsigned int blktype)
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  117  {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  118          
struct gfs2_sbd *sdp = sb->s_fs_info;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  119          
struct gfs2_glock *gl = NULL;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  120          
struct inode *inode;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  121          
struct gfs2_inode *ip;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  122          
struct gfs2_holder gh;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  123          
int error;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  124  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  125          
gfs2_holder_mark_uninitialized(&gh);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  126          
inode = ilookup5(sb, no_addr, iget_test, &no_addr);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  127          
if (!inode && (type == DT_UNKNOWN || blktype != GFS2_BLKST_FREE)) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  128          
        error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &gl);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  129          
        if (unlikely(error))
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  130          
                goto fail;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  131  
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  132          
        /*
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  133          
         * The GL_SKIP flag indicates to skip reading the inode
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  134          
         * block.  We read the inode when instantiating it
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  135          
         * after possibly checking the block type.
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  136          
         */
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  137          
        error = gfs2_glock_nq_init(gl, LM_ST_EXCLUSIVE, GL_SKIP, &gh);
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  138          
        if (error)
40e7e86ef16550 fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-24  139          
                goto fail;
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  140  
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  141          
        error = -ESTALE;
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  142          
        if (no_formal_ino &&
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  143          
            gfs2_inode_already_deleted(gl, no_formal_ino))
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  144          
                goto fail;
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  145  
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  146          
        if (blktype != GFS2_BLKST_FREE) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  147          
                error = gfs2_check_blk_type(sdp, no_addr, blktype);
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  148          
                if (error)
40e7e86ef16550 fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-24  149          
                        goto fail;
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  150          
        }
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  151          
}
3ce37b2cb49176 fs/gfs2/inode.c     Andreas Gruenbacher 2016-06-14  152  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  153          
while (!inode) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  154          
        inode = iget5_locked(sb, no_addr, iget_test, iget_set, &no_addr);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  155          
        error = -ENOMEM;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  156          
        if (!inode)
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  157          
                goto fail;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  158          
        if (is_bad_inode(inode)) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  159          
                iput(inode);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  160          
                inode = NULL;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  161          
        }
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  162          
}
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  163  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  164          
ip = GFS2_I(inode);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  165  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  166          
if (inode->i_state & I_NEW) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  167          
        struct gfs2_glock *io_gl;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  168  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29 @169          
        if (!gl) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  170          
                error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, 
&gl);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  171          
                if (unlikely(error))
40e7e86ef16550 fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-24  172          
                        goto fail;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  173          
        }
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  174          
        flush_delayed_work(&gl->gl_work);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  175          
        set_bit(GLF_INSTANTIATE_NEEDED, &gl->gl_flags);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  176  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  177          
        error = gfs2_glock_get(sdp, no_addr, &gfs2_iopen_glops, CREATE, &io_gl);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  178          
        if (unlikely(error))
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  179          
                goto fail;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  180          
        if (blktype != GFS2_BLKST_UNLINKED)
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  181          
                gfs2_cancel_delete_work(io_gl);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  182          
        error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, 
&ip->i_iopen_gh);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  183          
        gfs2_glock_put(io_gl);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  184          
        if (unlikely(error))
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  185          
                goto fail;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  186  
2b0fb353c029de fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  187          
        /* Lowest possible timestamp; will be overwritten in gfs2_dinode_in. */
2b0fb353c029de fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  188          
        inode->i_atime.tv_sec = 1LL << (8 * sizeof(inode->i_atime.tv_sec) - 1);
2b0fb353c029de fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  189          
        inode->i_atime.tv_nsec = 0;
2b0fb353c029de fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  190  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  191          
        ip->i_gl = gl;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29 @192          
        glock_set_object(gl, ip);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  193  
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  194          
        if (type == DT_UNKNOWN) {
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  195          
                /* Inode glock must be locked already */
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  196          
                error = gfs2_instantiate(&gh);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  197          
                if (error) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  198          
                        glock_clear_object(gl, ip);
40e7e86ef16550 fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-24  199          
                        goto fail;
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  200          
                }
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  201          
        } else {
2b0fb353c029de fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  202          
                ip->i_no_formal_ino = no_formal_ino;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  203          
                inode->i_mode = DT2IF(type);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  204          
        }
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  205  
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  206          
        if (gfs2_holder_initialized(&gh))
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  207          
                gfs2_glock_dq_uninit(&gh);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  208          
        glock_set_object(io_gl, ip);
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  209  
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  210          
        gfs2_set_iop(inode);
a44a8c9c8df1fa fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  211          
        unlock_new_inode(inode);
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  212          
}
332f51d7db13ff fs/gfs2/inode.c     Andreas Gruenbacher 2016-09-26  213  
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  214          
if (no_formal_ino && ip->i_no_formal_ino &&
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  215          
    no_formal_ino != ip->i_no_formal_ino) {
b66648ad6dcfef fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-15  216          
        iput(inode);
a44a8c9c8df1fa fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  217          
        return ERR_PTR(-ESTALE);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  218          
}
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  219  
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  220          
return inode;
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  221  
40e7e86ef16550 fs/gfs2/inode.c     Andreas Gruenbacher 2020-01-24  222  fail:
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  223          
if (inode) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  224          
        if (gfs2_holder_initialized(&ip->i_iopen_gh))
763766c0571ea1 fs/gfs2/inode.c     Bob Peterson        2021-09-29  225          
                gfs2_glock_dq_uninit(&ip->i_iopen_gh);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  226          
        if (inode->i_state & I_NEW) {
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  227          
                make_bad_inode(inode);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  228          
                unlock_new_inode(inode);
763766c0571ea1 fs/gfs2/inode.c     Bob Peterson        2021-09-29  229          
        }
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  230          
        iput(inode);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  231          
}
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  232          
if (gfs2_holder_initialized(&gh))
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  233          
        gfs2_glock_dq_uninit(&gh);
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  234          
if (gl)
cfdb9692082c42 fs/gfs2/inode.c     Andreas Gruenbacher 2021-11-29  235          
        gfs2_glock_put(gl);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  236          
return ERR_PTR(error);
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  237  }
194c011fc4650d fs/gfs2/ops_inode.c Steven Whitehouse   2011-05-09  238  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to