[linux-next:master 5363/7554] kernel/sys.c:1896:17: sparse: sparse: incorrect type in assignment (different address spaces)
kernel test robot
lkp at intel.com
Thu Aug 12 22:50:59 PDT 2021
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 9b992972fb9c2a1bc3fb25bab70da8a4385e3abe
commit: 9cf1d7d830f4a586dfa4ddcaf9eae3959e0708ef [5363/7554] ARC: cmpxchg/xchg: rewrite as macros to make type safe
config: arc-randconfig-s032-20210812 (attached as .config)
compiler: arceb-elf-gcc (GCC) 10.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=9cf1d7d830f4a586dfa4ddcaf9eae3959e0708ef
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 9cf1d7d830f4a586dfa4ddcaf9eae3959e0708ef
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/sys.c:1896:19: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct file [noderef] __rcu *_val_ @@ got struct file *[assigned] file @@
kernel/sys.c:1896:19: sparse: expected struct file [noderef] __rcu *_val_
kernel/sys.c:1896:19: sparse: got struct file *[assigned] file
>> kernel/sys.c:1896:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct file *old_exe @@ got struct file [noderef] __rcu *[assigned] _val_ @@
kernel/sys.c:1896:17: sparse: expected struct file *old_exe
kernel/sys.c:1896:17: sparse: got struct file [noderef] __rcu *[assigned] _val_
kernel/sys.c:1067:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *real_parent @@
kernel/sys.c:1067:32: sparse: expected struct task_struct *p1
kernel/sys.c:1067:32: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/sys.c: note: in included file (through include/linux/rcuwait.h, include/linux/percpu-rwsem.h, include/linux/fs.h, ...):
include/linux/sched/signal.h:714:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
include/linux/sched/signal.h:714:37: sparse: expected struct spinlock [usertype] *lock
include/linux/sched/signal.h:714:37: sparse: got struct spinlock [noderef] __rcu *
--
net/ipv4/tcp_cong.c:238:24: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct tcp_congestion_ops const [noderef] __rcu *_val_ @@ got struct tcp_congestion_ops *[assigned] ca @@
net/ipv4/tcp_cong.c:238:24: sparse: expected struct tcp_congestion_ops const [noderef] __rcu *_val_
net/ipv4/tcp_cong.c:238:24: sparse: got struct tcp_congestion_ops *[assigned] ca
>> net/ipv4/tcp_cong.c:238:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct tcp_congestion_ops const *prev @@ got struct tcp_congestion_ops const [noderef] __rcu *[assigned] _val_ @@
net/ipv4/tcp_cong.c:238:22: sparse: expected struct tcp_congestion_ops const *prev
net/ipv4/tcp_cong.c:238:22: sparse: got struct tcp_congestion_ops const [noderef] __rcu *[assigned] _val_
vim +1896 kernel/sys.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 1845
6e399cd144d850 Davidlohr Bueso 2015-04-16 1846 static int prctl_set_mm_exe_file(struct mm_struct *mm, unsigned int fd)
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1847 {
2903ff019b346a Al Viro 2012-08-28 1848 struct fd exe;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1849 struct file *old_exe, *exe_file;
496ad9aa8ef448 Al Viro 2013-01-23 1850 struct inode *inode;
2903ff019b346a Al Viro 2012-08-28 1851 int err;
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1852
2903ff019b346a Al Viro 2012-08-28 1853 exe = fdget(fd);
2903ff019b346a Al Viro 2012-08-28 1854 if (!exe.file)
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1855 return -EBADF;
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1856
496ad9aa8ef448 Al Viro 2013-01-23 1857 inode = file_inode(exe.file);
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1858
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1859 /*
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1860 * Because the original mm->exe_file points to executable file, make
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1861 * sure that this one is executable as well, to avoid breaking an
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1862 * overall picture.
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1863 */
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1864 err = -EACCES;
90f8572b0f021f Eric W. Biederman 2015-06-29 1865 if (!S_ISREG(inode->i_mode) || path_noexec(&exe.file->f_path))
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1866 goto exit;
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1867
02f92b3868a1b3 Christian Brauner 2021-01-21 1868 err = file_permission(exe.file, MAY_EXEC);
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1869 if (err)
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1870 goto exit;
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1871
bafb282df29c15 Konstantin Khlebnikov 2012-06-07 1872 /*
4229fb1dc6843c Konstantin Khlebnikov 2012-07-11 1873 * Forbid mm->exe_file change if old file still mapped.
bafb282df29c15 Konstantin Khlebnikov 2012-06-07 1874 */
6e399cd144d850 Davidlohr Bueso 2015-04-16 1875 exe_file = get_mm_exe_file(mm);
bafb282df29c15 Konstantin Khlebnikov 2012-06-07 1876 err = -EBUSY;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1877 if (exe_file) {
4229fb1dc6843c Konstantin Khlebnikov 2012-07-11 1878 struct vm_area_struct *vma;
4229fb1dc6843c Konstantin Khlebnikov 2012-07-11 1879
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 1880 mmap_read_lock(mm);
6e399cd144d850 Davidlohr Bueso 2015-04-16 1881 for (vma = mm->mmap; vma; vma = vma->vm_next) {
6e399cd144d850 Davidlohr Bueso 2015-04-16 1882 if (!vma->vm_file)
6e399cd144d850 Davidlohr Bueso 2015-04-16 1883 continue;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1884 if (path_equal(&vma->vm_file->f_path,
6e399cd144d850 Davidlohr Bueso 2015-04-16 1885 &exe_file->f_path))
6e399cd144d850 Davidlohr Bueso 2015-04-16 1886 goto exit_err;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1887 }
6e399cd144d850 Davidlohr Bueso 2015-04-16 1888
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 1889 mmap_read_unlock(mm);
6e399cd144d850 Davidlohr Bueso 2015-04-16 1890 fput(exe_file);
bafb282df29c15 Konstantin Khlebnikov 2012-06-07 1891 }
bafb282df29c15 Konstantin Khlebnikov 2012-06-07 1892
4229fb1dc6843c Konstantin Khlebnikov 2012-07-11 1893 err = 0;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1894 /* set the new file, lockless */
6e399cd144d850 Davidlohr Bueso 2015-04-16 1895 get_file(exe.file);
6e399cd144d850 Davidlohr Bueso 2015-04-16 @1896 old_exe = xchg(&mm->exe_file, exe.file);
6e399cd144d850 Davidlohr Bueso 2015-04-16 1897 if (old_exe)
6e399cd144d850 Davidlohr Bueso 2015-04-16 1898 fput(old_exe);
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1899 exit:
2903ff019b346a Al Viro 2012-08-28 1900 fdput(exe);
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1901 return err;
6e399cd144d850 Davidlohr Bueso 2015-04-16 1902 exit_err:
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 1903 mmap_read_unlock(mm);
6e399cd144d850 Davidlohr Bueso 2015-04-16 1904 fput(exe_file);
6e399cd144d850 Davidlohr Bueso 2015-04-16 1905 goto exit;
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1906 }
b32dfe377102ce Cyrill Gorcunov 2012-05-31 1907
:::::: The code at line 1896 was first introduced by commit
:::::: 6e399cd144d8500ffb5d40fa6848890e2580a80a prctl: avoid using mmap_sem for exe_file serialization
:::::: TO: Davidlohr Bueso <dave at stgolabs.net>
:::::: CC: Linus Torvalds <torvalds at linux-foundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 41591 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-snps-arc/attachments/20210813/6f4c1bf2/attachment-0001.gz>
More information about the linux-snps-arc
mailing list