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

tree:   https://github.com/allisonhenderson/xfs_work.git 
delayed_attrs_v22_extended
head:   aff89515c2d9aca9b24ac0296f3806af62cd9206
commit: aff89515c2d9aca9b24ac0296f3806af62cd9206 [32/32] xfs: Add parent 
pointer ioctl
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: microblaze-randconfig-m031-20210730 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 10.3.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/xfs/xfs_ioctl.c:1834 xfs_ioc_get_parent_pointer() warn: maybe return -EFAULT 
instead of the bytes remaining?

Old smatch warnings:
arch/microblaze/include/asm/thread_info.h:91 current_thread_info() error: 
uninitialized symbol 'sp'.

vim +1834 fs/xfs/xfs_ioctl.c

36fd6e863cb7329 Darrick J. Wong   2017-10-17  1755  
aff89515c2d9aca Allison Henderson 2021-07-23  1756  /*
aff89515c2d9aca Allison Henderson 2021-07-23  1757   * IOCTL routine to get the 
parent pointers of an inode and return it to user
aff89515c2d9aca Allison Henderson 2021-07-23  1758   * space.  Caller must pass 
a buffer space containing a struct xfs_pptr_info,
aff89515c2d9aca Allison Henderson 2021-07-23  1759   * followed by a region 
large enough to contain an array of struct
aff89515c2d9aca Allison Henderson 2021-07-23  1760   * xfs_parent_ptr of a size 
specified in pi_ptrs_size.  If the inode contains
aff89515c2d9aca Allison Henderson 2021-07-23  1761   * more parent pointers 
than can fit in the buffer space, caller may re-call
aff89515c2d9aca Allison Henderson 2021-07-23  1762   * the function using the 
returned pi_cursor to resume iteration.  The
aff89515c2d9aca Allison Henderson 2021-07-23  1763   * number of xfs_parent_ptr 
returned will be stored in pi_ptrs_used.
aff89515c2d9aca Allison Henderson 2021-07-23  1764   *
aff89515c2d9aca Allison Henderson 2021-07-23  1765   * Returns 0 on success or 
non-zero on failure
aff89515c2d9aca Allison Henderson 2021-07-23  1766   */
aff89515c2d9aca Allison Henderson 2021-07-23  1767  STATIC int
aff89515c2d9aca Allison Henderson 2021-07-23  1768  xfs_ioc_get_parent_pointer(
aff89515c2d9aca Allison Henderson 2021-07-23  1769      struct file             
        *filp,
aff89515c2d9aca Allison Henderson 2021-07-23  1770      void                    
        __user *arg)
aff89515c2d9aca Allison Henderson 2021-07-23  1771  {
aff89515c2d9aca Allison Henderson 2021-07-23  1772      struct xfs_pptr_info    
        *ppi = NULL;
aff89515c2d9aca Allison Henderson 2021-07-23  1773      int                     
        error = 0;
aff89515c2d9aca Allison Henderson 2021-07-23  1774      struct xfs_inode        
        *ip = XFS_I(file_inode(filp));
aff89515c2d9aca Allison Henderson 2021-07-23  1775      struct xfs_mount        
        *mp = ip->i_mount;
aff89515c2d9aca Allison Henderson 2021-07-23  1776  
aff89515c2d9aca Allison Henderson 2021-07-23  1777      if 
(!capable(CAP_SYS_ADMIN))
aff89515c2d9aca Allison Henderson 2021-07-23  1778              return -EPERM;
aff89515c2d9aca Allison Henderson 2021-07-23  1779  
aff89515c2d9aca Allison Henderson 2021-07-23  1780      /* Allocate an 
xfs_pptr_info to put the user data */
aff89515c2d9aca Allison Henderson 2021-07-23  1781      ppi = 
kmem_alloc(sizeof(struct xfs_pptr_info), 0);
aff89515c2d9aca Allison Henderson 2021-07-23  1782      if (!ppi)
aff89515c2d9aca Allison Henderson 2021-07-23  1783              return -ENOMEM;
aff89515c2d9aca Allison Henderson 2021-07-23  1784  
aff89515c2d9aca Allison Henderson 2021-07-23  1785      /* Copy the data from 
the user */
aff89515c2d9aca Allison Henderson 2021-07-23  1786      error = 
copy_from_user(ppi, arg, sizeof(struct xfs_pptr_info));
aff89515c2d9aca Allison Henderson 2021-07-23  1787      if (error)
aff89515c2d9aca Allison Henderson 2021-07-23  1788              goto out;
aff89515c2d9aca Allison Henderson 2021-07-23  1789  
aff89515c2d9aca Allison Henderson 2021-07-23  1790      /* Check size of buffer 
requested by user */
aff89515c2d9aca Allison Henderson 2021-07-23  1791      if 
(XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size) > XFS_XATTR_LIST_MAX) {
aff89515c2d9aca Allison Henderson 2021-07-23  1792              error = -ENOMEM;
aff89515c2d9aca Allison Henderson 2021-07-23  1793              goto out;
aff89515c2d9aca Allison Henderson 2021-07-23  1794      }
aff89515c2d9aca Allison Henderson 2021-07-23  1795  
aff89515c2d9aca Allison Henderson 2021-07-23  1796      /*
aff89515c2d9aca Allison Henderson 2021-07-23  1797       * Now that we know how 
big the trailing buffer is, expand
aff89515c2d9aca Allison Henderson 2021-07-23  1798       * our kernel 
xfs_pptr_info to be the same size
aff89515c2d9aca Allison Henderson 2021-07-23  1799       */
aff89515c2d9aca Allison Henderson 2021-07-23  1800      ppi = krealloc(ppi, 
XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size),
aff89515c2d9aca Allison Henderson 2021-07-23  1801                     GFP_NOFS 
| __GFP_NOFAIL);
aff89515c2d9aca Allison Henderson 2021-07-23  1802      if (!ppi)
aff89515c2d9aca Allison Henderson 2021-07-23  1803              return -ENOMEM;
aff89515c2d9aca Allison Henderson 2021-07-23  1804  
aff89515c2d9aca Allison Henderson 2021-07-23  1805      if (ppi->pi_flags != 0 
&& ppi->pi_flags != XFS_PPTR_IFLAG_HANDLE) {
aff89515c2d9aca Allison Henderson 2021-07-23  1806              error = -EINVAL;
aff89515c2d9aca Allison Henderson 2021-07-23  1807              goto out;
aff89515c2d9aca Allison Henderson 2021-07-23  1808      }
aff89515c2d9aca Allison Henderson 2021-07-23  1809  
aff89515c2d9aca Allison Henderson 2021-07-23  1810      if (ppi->pi_flags == 
XFS_PPTR_IFLAG_HANDLE) {
aff89515c2d9aca Allison Henderson 2021-07-23  1811              error = 
xfs_iget(mp, NULL, ppi->pi_handle.ha_fid.fid_ino,
aff89515c2d9aca Allison Henderson 2021-07-23  1812                              
0, 0, &ip);
aff89515c2d9aca Allison Henderson 2021-07-23  1813              if (error)
aff89515c2d9aca Allison Henderson 2021-07-23  1814                      goto 
out;
aff89515c2d9aca Allison Henderson 2021-07-23  1815      }
aff89515c2d9aca Allison Henderson 2021-07-23  1816  
aff89515c2d9aca Allison Henderson 2021-07-23  1817      if (ip->i_ino == 
mp->m_sb.sb_rootino)
aff89515c2d9aca Allison Henderson 2021-07-23  1818              ppi->pi_flags 
|= XFS_PPTR_OFLAG_ROOT;
aff89515c2d9aca Allison Henderson 2021-07-23  1819  
aff89515c2d9aca Allison Henderson 2021-07-23  1820      /* Get the parent 
pointers */
aff89515c2d9aca Allison Henderson 2021-07-23  1821      error = 
xfs_attr_get_parent_pointer(ip, ppi);
aff89515c2d9aca Allison Henderson 2021-07-23  1822  
aff89515c2d9aca Allison Henderson 2021-07-23  1823      if (error)
aff89515c2d9aca Allison Henderson 2021-07-23  1824              goto out;
aff89515c2d9aca Allison Henderson 2021-07-23  1825  
aff89515c2d9aca Allison Henderson 2021-07-23  1826      /* Copy the parent 
pointers back to the user */
aff89515c2d9aca Allison Henderson 2021-07-23  1827      error = 
copy_to_user(arg, ppi,
aff89515c2d9aca Allison Henderson 2021-07-23  1828                      
XFS_PPTR_INFO_SIZEOF(ppi->pi_ptrs_size));
aff89515c2d9aca Allison Henderson 2021-07-23  1829      if (error)
aff89515c2d9aca Allison Henderson 2021-07-23  1830              goto out;
aff89515c2d9aca Allison Henderson 2021-07-23  1831  
aff89515c2d9aca Allison Henderson 2021-07-23  1832  out:
aff89515c2d9aca Allison Henderson 2021-07-23  1833      kmem_free(ppi);
aff89515c2d9aca Allison Henderson 2021-07-23 @1834      return error;
aff89515c2d9aca Allison Henderson 2021-07-23  1835  }
aff89515c2d9aca Allison Henderson 2021-07-23  1836  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to