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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
