CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Allison Henderson <[email protected]>

tree:   https://github.com/allisonhenderson/xfs_work.git larp_cleanupv4_pptrs
head:   3d7771d8177638d5d115404cbee0b9a77cf0bb4c
commit: 3d7771d8177638d5d115404cbee0b9a77cf0bb4c [35/35] xfs: Add parent 
pointer ioctl
:::::: branch date: 24 hours ago
:::::: commit date: 24 hours ago
config: i386-randconfig-m031-20220509 
(https://download.01.org/0day-ci/archive/20220512/[email protected]/config)
compiler: gcc-11 (Debian 11.2.0-20) 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]>

smatch warnings:
fs/xfs/xfs_ioctl.c:1756 xfs_ioc_get_parent_pointer() warn: maybe return -EFAULT 
instead of the bytes remaining?

vim +1756 fs/xfs/xfs_ioctl.c

36fd6e863cb732 Darrick J. Wong   2017-10-17  1677  
3d7771d8177638 Allison Henderson 2022-05-10  1678  /*
3d7771d8177638 Allison Henderson 2022-05-10  1679   * IOCTL routine to get the 
parent pointers of an inode and return it to user
3d7771d8177638 Allison Henderson 2022-05-10  1680   * space.  Caller must pass 
a buffer space containing a struct xfs_pptr_info,
3d7771d8177638 Allison Henderson 2022-05-10  1681   * followed by a region 
large enough to contain an array of struct
3d7771d8177638 Allison Henderson 2022-05-10  1682   * xfs_parent_ptr of a size 
specified in pi_ptrs_size.  If the inode contains
3d7771d8177638 Allison Henderson 2022-05-10  1683   * more parent pointers than 
can fit in the buffer space, caller may re-call
3d7771d8177638 Allison Henderson 2022-05-10  1684   * the function using the 
returned pi_cursor to resume iteration.  The
3d7771d8177638 Allison Henderson 2022-05-10  1685   * number of xfs_parent_ptr 
returned will be stored in pi_ptrs_used.
3d7771d8177638 Allison Henderson 2022-05-10  1686   *
3d7771d8177638 Allison Henderson 2022-05-10  1687   * Returns 0 on success or 
non-zero on failure
3d7771d8177638 Allison Henderson 2022-05-10  1688   */
3d7771d8177638 Allison Henderson 2022-05-10  1689  STATIC int
3d7771d8177638 Allison Henderson 2022-05-10  1690  xfs_ioc_get_parent_pointer(
3d7771d8177638 Allison Henderson 2022-05-10  1691       struct file             
        *filp,
3d7771d8177638 Allison Henderson 2022-05-10  1692       void                    
        __user *arg)
3d7771d8177638 Allison Henderson 2022-05-10  1693  {
3d7771d8177638 Allison Henderson 2022-05-10  1694       struct xfs_pptr_info    
        *ppi = NULL;
3d7771d8177638 Allison Henderson 2022-05-10  1695       int                     
        error = 0;
3d7771d8177638 Allison Henderson 2022-05-10  1696       struct xfs_inode        
        *ip = XFS_I(file_inode(filp));
3d7771d8177638 Allison Henderson 2022-05-10  1697       struct xfs_mount        
        *mp = ip->i_mount;
3d7771d8177638 Allison Henderson 2022-05-10  1698  
3d7771d8177638 Allison Henderson 2022-05-10  1699       if 
(!capable(CAP_SYS_ADMIN))
3d7771d8177638 Allison Henderson 2022-05-10  1700               return -EPERM;
3d7771d8177638 Allison Henderson 2022-05-10  1701  
3d7771d8177638 Allison Henderson 2022-05-10  1702       /* Allocate an 
xfs_pptr_info to put the user data */
3d7771d8177638 Allison Henderson 2022-05-10  1703       ppi = 
kmem_alloc(sizeof(struct xfs_pptr_info), 0);
3d7771d8177638 Allison Henderson 2022-05-10  1704       if (!ppi)
3d7771d8177638 Allison Henderson 2022-05-10  1705               return -ENOMEM;
3d7771d8177638 Allison Henderson 2022-05-10  1706  
3d7771d8177638 Allison Henderson 2022-05-10  1707       /* Copy the data from 
the user */
3d7771d8177638 Allison Henderson 2022-05-10  1708       error = 
copy_from_user(ppi, arg, sizeof(struct xfs_pptr_info));
3d7771d8177638 Allison Henderson 2022-05-10  1709       if (error)
3d7771d8177638 Allison Henderson 2022-05-10  1710               goto out;
3d7771d8177638 Allison Henderson 2022-05-10  1711  
3d7771d8177638 Allison Henderson 2022-05-10  1712       /* Check size of buffer 
requested by user */
3d7771d8177638 Allison Henderson 2022-05-10  1713       if 
(XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size) > XFS_XATTR_LIST_MAX) {
3d7771d8177638 Allison Henderson 2022-05-10  1714               error = -ENOMEM;
3d7771d8177638 Allison Henderson 2022-05-10  1715               goto out;
3d7771d8177638 Allison Henderson 2022-05-10  1716       }
3d7771d8177638 Allison Henderson 2022-05-10  1717  
3d7771d8177638 Allison Henderson 2022-05-10  1718       /*
3d7771d8177638 Allison Henderson 2022-05-10  1719        * Now that we know how 
big the trailing buffer is, expand
3d7771d8177638 Allison Henderson 2022-05-10  1720        * our kernel 
xfs_pptr_info to be the same size
3d7771d8177638 Allison Henderson 2022-05-10  1721        */
3d7771d8177638 Allison Henderson 2022-05-10  1722       ppi = krealloc(ppi, 
XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size),
3d7771d8177638 Allison Henderson 2022-05-10  1723                      GFP_NOFS 
| __GFP_NOFAIL);
3d7771d8177638 Allison Henderson 2022-05-10  1724       if (!ppi)
3d7771d8177638 Allison Henderson 2022-05-10  1725               return -ENOMEM;
3d7771d8177638 Allison Henderson 2022-05-10  1726  
3d7771d8177638 Allison Henderson 2022-05-10  1727       if (ppi->pi_flags != 0 
&& ppi->pi_flags != XFS_PPTR_IFLAG_HANDLE) {
3d7771d8177638 Allison Henderson 2022-05-10  1728               error = -EINVAL;
3d7771d8177638 Allison Henderson 2022-05-10  1729               goto out;
3d7771d8177638 Allison Henderson 2022-05-10  1730       }
3d7771d8177638 Allison Henderson 2022-05-10  1731  
3d7771d8177638 Allison Henderson 2022-05-10  1732       if (ppi->pi_flags == 
XFS_PPTR_IFLAG_HANDLE) {
3d7771d8177638 Allison Henderson 2022-05-10  1733               error = 
xfs_iget(mp, NULL, ppi->pi_handle.ha_fid.fid_ino,
3d7771d8177638 Allison Henderson 2022-05-10  1734                               
0, 0, &ip);
3d7771d8177638 Allison Henderson 2022-05-10  1735               if (error)
3d7771d8177638 Allison Henderson 2022-05-10  1736                       goto 
out;
3d7771d8177638 Allison Henderson 2022-05-10  1737       }
3d7771d8177638 Allison Henderson 2022-05-10  1738  
3d7771d8177638 Allison Henderson 2022-05-10  1739       if (ip->i_ino == 
mp->m_sb.sb_rootino)
3d7771d8177638 Allison Henderson 2022-05-10  1740               ppi->pi_flags 
|= XFS_PPTR_OFLAG_ROOT;
3d7771d8177638 Allison Henderson 2022-05-10  1741  
3d7771d8177638 Allison Henderson 2022-05-10  1742       /* Get the parent 
pointers */
3d7771d8177638 Allison Henderson 2022-05-10  1743       error = 
xfs_attr_get_parent_pointer(ip, ppi);
3d7771d8177638 Allison Henderson 2022-05-10  1744  
3d7771d8177638 Allison Henderson 2022-05-10  1745       if (error)
3d7771d8177638 Allison Henderson 2022-05-10  1746               goto out;
3d7771d8177638 Allison Henderson 2022-05-10  1747  
3d7771d8177638 Allison Henderson 2022-05-10  1748       /* Copy the parent 
pointers back to the user */
3d7771d8177638 Allison Henderson 2022-05-10  1749       error = 
copy_to_user(arg, ppi,
3d7771d8177638 Allison Henderson 2022-05-10  1750                       
XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size));
3d7771d8177638 Allison Henderson 2022-05-10  1751       if (error)
3d7771d8177638 Allison Henderson 2022-05-10  1752               goto out;
3d7771d8177638 Allison Henderson 2022-05-10  1753  
3d7771d8177638 Allison Henderson 2022-05-10  1754  out:
3d7771d8177638 Allison Henderson 2022-05-10  1755       kmem_free(ppi);
3d7771d8177638 Allison Henderson 2022-05-10 @1756       return error;
3d7771d8177638 Allison Henderson 2022-05-10  1757  }
3d7771d8177638 Allison Henderson 2022-05-10  1758  

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

Reply via email to