* kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
@ 2023-12-14 13:35 kernel test robot
2023-12-18 2:09 ` Liu, Yujie
0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2023-12-14 13:35 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "only kconfig file changed"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Steven Rostedt (Google)" <rostedt@goodmis.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5bd7ef53ffe5ca580e93e74eb8c81ed191ddc4bd
commit: 88fe1ec75fcb296579e05eaf3807da3ee83137e4 tracing: Unbreak user events
date: 9 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 9 months ago
config: i386-randconfig-061-20231101 (https://download.01.org/0day-ci/archive/20231214/202312142158.dqa8GNKr-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231214/202312142158.dqa8GNKr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202312142158.dqa8GNKr-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs [noderef] __rcu *
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1934:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1961:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs *
vim +1826 kernel/trace/trace_events_user.c
7f5a08c79df35e Beau Belgrave 2022-01-18 1808
7f5a08c79df35e Beau Belgrave 2022-01-18 1809 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1810 * Validates the user payload and writes via iterator.
7f5a08c79df35e Beau Belgrave 2022-01-18 1811 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1812 static ssize_t user_events_write_core(struct file *file, struct iov_iter *i)
7f5a08c79df35e Beau Belgrave 2022-01-18 1813 {
e5d271812e7a4d Beau Belgrave 2022-09-30 1814 struct user_event_file_info *info = file->private_data;
7f5a08c79df35e Beau Belgrave 2022-01-18 1815 struct user_event_refs *refs;
7f5a08c79df35e Beau Belgrave 2022-01-18 1816 struct user_event *user = NULL;
7f5a08c79df35e Beau Belgrave 2022-01-18 1817 struct tracepoint *tp;
7f5a08c79df35e Beau Belgrave 2022-01-18 1818 ssize_t ret = i->count;
7f5a08c79df35e Beau Belgrave 2022-01-18 1819 int idx;
7f5a08c79df35e Beau Belgrave 2022-01-18 1820
7f5a08c79df35e Beau Belgrave 2022-01-18 1821 if (unlikely(copy_from_iter(&idx, sizeof(idx), i) != sizeof(idx)))
7f5a08c79df35e Beau Belgrave 2022-01-18 1822 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1823
7f5a08c79df35e Beau Belgrave 2022-01-18 1824 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1825
e5d271812e7a4d Beau Belgrave 2022-09-30 @1826 refs = rcu_dereference_sched(info->refs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1827
7f5a08c79df35e Beau Belgrave 2022-01-18 1828 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1829 * The refs->events array is protected by RCU, and new items may be
7f5a08c79df35e Beau Belgrave 2022-01-18 1830 * added. But the user retrieved from indexing into the events array
7f5a08c79df35e Beau Belgrave 2022-01-18 1831 * shall be immutable while the file is opened.
7f5a08c79df35e Beau Belgrave 2022-01-18 1832 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1833 if (likely(refs && idx < refs->count))
7f5a08c79df35e Beau Belgrave 2022-01-18 1834 user = refs->events[idx];
7f5a08c79df35e Beau Belgrave 2022-01-18 1835
7f5a08c79df35e Beau Belgrave 2022-01-18 1836 rcu_read_unlock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1837
7f5a08c79df35e Beau Belgrave 2022-01-18 1838 if (unlikely(user == NULL))
7f5a08c79df35e Beau Belgrave 2022-01-18 1839 return -ENOENT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1840
2467cda1b5c97a Beau Belgrave 2022-01-18 1841 if (unlikely(i->count < user->min_size))
2467cda1b5c97a Beau Belgrave 2022-01-18 1842 return -EINVAL;
2467cda1b5c97a Beau Belgrave 2022-01-18 1843
7f5a08c79df35e Beau Belgrave 2022-01-18 1844 tp = &user->tracepoint;
7f5a08c79df35e Beau Belgrave 2022-01-18 1845
7f5a08c79df35e Beau Belgrave 2022-01-18 1846 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1847 * It's possible key.enabled disables after this check, however
7f5a08c79df35e Beau Belgrave 2022-01-18 1848 * we don't mind if a few events are included in this condition.
7f5a08c79df35e Beau Belgrave 2022-01-18 1849 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1850 if (likely(atomic_read(&tp->key.enabled) > 0)) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1851 struct tracepoint_func *probe_func_ptr;
7f5a08c79df35e Beau Belgrave 2022-01-18 1852 user_event_func_t probe_func;
0279400ad38d85 Beau Belgrave 2022-01-18 1853 struct iov_iter copy;
7f5a08c79df35e Beau Belgrave 2022-01-18 1854 void *tpdata;
2467cda1b5c97a Beau Belgrave 2022-01-18 1855 bool faulted;
7f5a08c79df35e Beau Belgrave 2022-01-18 1856
0279400ad38d85 Beau Belgrave 2022-01-18 1857 if (unlikely(fault_in_iov_iter_readable(i, i->count)))
0279400ad38d85 Beau Belgrave 2022-01-18 1858 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1859
2467cda1b5c97a Beau Belgrave 2022-01-18 1860 faulted = false;
2467cda1b5c97a Beau Belgrave 2022-01-18 1861
7f5a08c79df35e Beau Belgrave 2022-01-18 1862 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1863
7f5a08c79df35e Beau Belgrave 2022-01-18 1864 probe_func_ptr = rcu_dereference_sched(tp->funcs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1865
7f5a08c79df35e Beau Belgrave 2022-01-18 1866 if (probe_func_ptr) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1867 do {
0279400ad38d85 Beau Belgrave 2022-01-18 1868 copy = *i;
7f5a08c79df35e Beau Belgrave 2022-01-18 1869 probe_func = probe_func_ptr->func;
7f5a08c79df35e Beau Belgrave 2022-01-18 1870 tpdata = probe_func_ptr->data;
2467cda1b5c97a Beau Belgrave 2022-01-18 1871 probe_func(user, ©, tpdata, &faulted);
7f5a08c79df35e Beau Belgrave 2022-01-18 1872 } while ((++probe_func_ptr)->func);
7f5a08c79df35e Beau Belgrave 2022-01-18 1873 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1874
7f5a08c79df35e Beau Belgrave 2022-01-18 1875 rcu_read_unlock_sched();
2467cda1b5c97a Beau Belgrave 2022-01-18 1876
2467cda1b5c97a Beau Belgrave 2022-01-18 1877 if (unlikely(faulted))
2467cda1b5c97a Beau Belgrave 2022-01-18 1878 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1879 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1880
7f5a08c79df35e Beau Belgrave 2022-01-18 1881 return ret;
7f5a08c79df35e Beau Belgrave 2022-01-18 1882 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1883
:::::: The code at line 1826 was first introduced by commit
:::::: e5d271812e7a4d527e65b0228b4a16795c0e0c6c tracing/user_events: Move pages/locks into groups to prepare for namespaces
:::::: TO: Beau Belgrave <beaub@linux.microsoft.com>
:::::: CC: Steven Rostedt (Google) <rostedt@goodmis.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
2023-12-14 13:35 kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel test robot
@ 2023-12-18 2:09 ` Liu, Yujie
0 siblings, 0 replies; 4+ messages in thread
From: Liu, Yujie @ 2023-12-18 2:09 UTC (permalink / raw)
To: lkp, oe-kbuild
not_report
Only kconfig change, not the cause of the sparse warning.
kernel/trace/Kconfig | 1 -
1 file changed, 1 deletion(-)
-----Original Message-----
From: lkp <lkp@intel.com>
Sent: Thursday, December 14, 2023 21:35
To: oe-kbuild@lists.linux.dev
Cc: lkp <lkp@intel.com>
Subject: kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
::::::
:::::: Manual check reason: "only kconfig file changed"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Steven Rostedt (Google)" <rostedt@goodmis.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5bd7ef53ffe5ca580e93e74eb8c81ed191ddc4bd
commit: 88fe1ec75fcb296579e05eaf3807da3ee83137e4 tracing: Unbreak user events
date: 9 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 9 months ago
config: i386-randconfig-061-20231101 (https://download.01.org/0day-ci/archive/20231214/202312142158.dqa8GNKr-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231214/202312142158.dqa8GNKr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202312142158.dqa8GNKr-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs [noderef] __rcu *
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1934:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1961:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs *
vim +1826 kernel/trace/trace_events_user.c
7f5a08c79df35e Beau Belgrave 2022-01-18 1808
7f5a08c79df35e Beau Belgrave 2022-01-18 1809 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1810 * Validates the user payload and writes via iterator.
7f5a08c79df35e Beau Belgrave 2022-01-18 1811 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1812 static ssize_t user_events_write_core(struct file *file, struct iov_iter *i)
7f5a08c79df35e Beau Belgrave 2022-01-18 1813 {
e5d271812e7a4d Beau Belgrave 2022-09-30 1814 struct user_event_file_info *info = file->private_data;
7f5a08c79df35e Beau Belgrave 2022-01-18 1815 struct user_event_refs *refs;
7f5a08c79df35e Beau Belgrave 2022-01-18 1816 struct user_event *user = NULL;
7f5a08c79df35e Beau Belgrave 2022-01-18 1817 struct tracepoint *tp;
7f5a08c79df35e Beau Belgrave 2022-01-18 1818 ssize_t ret = i->count;
7f5a08c79df35e Beau Belgrave 2022-01-18 1819 int idx;
7f5a08c79df35e Beau Belgrave 2022-01-18 1820
7f5a08c79df35e Beau Belgrave 2022-01-18 1821 if (unlikely(copy_from_iter(&idx, sizeof(idx), i) != sizeof(idx)))
7f5a08c79df35e Beau Belgrave 2022-01-18 1822 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1823
7f5a08c79df35e Beau Belgrave 2022-01-18 1824 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1825
e5d271812e7a4d Beau Belgrave 2022-09-30 @1826 refs = rcu_dereference_sched(info->refs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1827
7f5a08c79df35e Beau Belgrave 2022-01-18 1828 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1829 * The refs->events array is protected by RCU, and new items may be
7f5a08c79df35e Beau Belgrave 2022-01-18 1830 * added. But the user retrieved from indexing into the events array
7f5a08c79df35e Beau Belgrave 2022-01-18 1831 * shall be immutable while the file is opened.
7f5a08c79df35e Beau Belgrave 2022-01-18 1832 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1833 if (likely(refs && idx < refs->count))
7f5a08c79df35e Beau Belgrave 2022-01-18 1834 user = refs->events[idx];
7f5a08c79df35e Beau Belgrave 2022-01-18 1835
7f5a08c79df35e Beau Belgrave 2022-01-18 1836 rcu_read_unlock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1837
7f5a08c79df35e Beau Belgrave 2022-01-18 1838 if (unlikely(user == NULL))
7f5a08c79df35e Beau Belgrave 2022-01-18 1839 return -ENOENT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1840
2467cda1b5c97a Beau Belgrave 2022-01-18 1841 if (unlikely(i->count < user->min_size))
2467cda1b5c97a Beau Belgrave 2022-01-18 1842 return -EINVAL;
2467cda1b5c97a Beau Belgrave 2022-01-18 1843
7f5a08c79df35e Beau Belgrave 2022-01-18 1844 tp = &user->tracepoint;
7f5a08c79df35e Beau Belgrave 2022-01-18 1845
7f5a08c79df35e Beau Belgrave 2022-01-18 1846 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1847 * It's possible key.enabled disables after this check, however
7f5a08c79df35e Beau Belgrave 2022-01-18 1848 * we don't mind if a few events are included in this condition.
7f5a08c79df35e Beau Belgrave 2022-01-18 1849 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1850 if (likely(atomic_read(&tp->key.enabled) > 0)) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1851 struct tracepoint_func *probe_func_ptr;
7f5a08c79df35e Beau Belgrave 2022-01-18 1852 user_event_func_t probe_func;
0279400ad38d85 Beau Belgrave 2022-01-18 1853 struct iov_iter copy;
7f5a08c79df35e Beau Belgrave 2022-01-18 1854 void *tpdata;
2467cda1b5c97a Beau Belgrave 2022-01-18 1855 bool faulted;
7f5a08c79df35e Beau Belgrave 2022-01-18 1856
0279400ad38d85 Beau Belgrave 2022-01-18 1857 if (unlikely(fault_in_iov_iter_readable(i, i->count)))
0279400ad38d85 Beau Belgrave 2022-01-18 1858 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1859
2467cda1b5c97a Beau Belgrave 2022-01-18 1860 faulted = false;
2467cda1b5c97a Beau Belgrave 2022-01-18 1861
7f5a08c79df35e Beau Belgrave 2022-01-18 1862 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1863
7f5a08c79df35e Beau Belgrave 2022-01-18 1864 probe_func_ptr = rcu_dereference_sched(tp->funcs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1865
7f5a08c79df35e Beau Belgrave 2022-01-18 1866 if (probe_func_ptr) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1867 do {
0279400ad38d85 Beau Belgrave 2022-01-18 1868 copy = *i;
7f5a08c79df35e Beau Belgrave 2022-01-18 1869 probe_func = probe_func_ptr->func;
7f5a08c79df35e Beau Belgrave 2022-01-18 1870 tpdata = probe_func_ptr->data;
2467cda1b5c97a Beau Belgrave 2022-01-18 1871 probe_func(user, ©, tpdata, &faulted);
7f5a08c79df35e Beau Belgrave 2022-01-18 1872 } while ((++probe_func_ptr)->func);
7f5a08c79df35e Beau Belgrave 2022-01-18 1873 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1874
7f5a08c79df35e Beau Belgrave 2022-01-18 1875 rcu_read_unlock_sched();
2467cda1b5c97a Beau Belgrave 2022-01-18 1876
2467cda1b5c97a Beau Belgrave 2022-01-18 1877 if (unlikely(faulted))
2467cda1b5c97a Beau Belgrave 2022-01-18 1878 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1879 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1880
7f5a08c79df35e Beau Belgrave 2022-01-18 1881 return ret;
7f5a08c79df35e Beau Belgrave 2022-01-18 1882 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1883
:::::: The code at line 1826 was first introduced by commit
:::::: e5d271812e7a4d527e65b0228b4a16795c0e0c6c tracing/user_events: Move pages/locks into groups to prepare for namespaces
:::::: TO: Beau Belgrave <beaub@linux.microsoft.com>
:::::: CC: Steven Rostedt (Google) <rostedt@goodmis.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
2023-11-11 15:06 kernel test robot
@ 2023-11-13 1:08 ` Liu, Yujie
0 siblings, 0 replies; 4+ messages in thread
From: Liu, Yujie @ 2023-11-13 1:08 UTC (permalink / raw)
To: lkp, oe-kbuild
not_report
Only kconfig file is changed. No relation with the "incompatible types in comparison" sparse warning.
kernel/trace/Kconfig | 1 -
1 file changed, 1 deletion(-)
-----Original Message-----
From: lkp <lkp@intel.com>
Sent: Saturday, November 11, 2023 23:07
To: oe-kbuild@lists.linux.dev
Cc: lkp <lkp@intel.com>
Subject: kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
::::::
:::::: Manual check reason: "only kconfig file changed"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Steven Rostedt (Google)" <rostedt@goodmis.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 3ca112b71f35dd5d99fc4571a56b5fc6f0c15814
commit: 88fe1ec75fcb296579e05eaf3807da3ee83137e4 tracing: Unbreak user events
date: 8 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 8 months ago
config: i386-randconfig-062-20230909 (https://download.01.org/0day-ci/archive/20231111/202311112237.hC0R2SES-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231111/202311112237.hC0R2SES-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202311112237.hC0R2SES-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs [noderef] __rcu *
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1934:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1961:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs *
vim +1826 kernel/trace/trace_events_user.c
7f5a08c79df35e Beau Belgrave 2022-01-18 1808
7f5a08c79df35e Beau Belgrave 2022-01-18 1809 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1810 * Validates the user payload and writes via iterator.
7f5a08c79df35e Beau Belgrave 2022-01-18 1811 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1812 static ssize_t user_events_write_core(struct file *file, struct iov_iter *i)
7f5a08c79df35e Beau Belgrave 2022-01-18 1813 {
e5d271812e7a4d Beau Belgrave 2022-09-30 1814 struct user_event_file_info *info = file->private_data;
7f5a08c79df35e Beau Belgrave 2022-01-18 1815 struct user_event_refs *refs;
7f5a08c79df35e Beau Belgrave 2022-01-18 1816 struct user_event *user = NULL;
7f5a08c79df35e Beau Belgrave 2022-01-18 1817 struct tracepoint *tp;
7f5a08c79df35e Beau Belgrave 2022-01-18 1818 ssize_t ret = i->count;
7f5a08c79df35e Beau Belgrave 2022-01-18 1819 int idx;
7f5a08c79df35e Beau Belgrave 2022-01-18 1820
7f5a08c79df35e Beau Belgrave 2022-01-18 1821 if (unlikely(copy_from_iter(&idx, sizeof(idx), i) != sizeof(idx)))
7f5a08c79df35e Beau Belgrave 2022-01-18 1822 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1823
7f5a08c79df35e Beau Belgrave 2022-01-18 1824 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1825
e5d271812e7a4d Beau Belgrave 2022-09-30 @1826 refs = rcu_dereference_sched(info->refs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1827
7f5a08c79df35e Beau Belgrave 2022-01-18 1828 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1829 * The refs->events array is protected by RCU, and new items may be
7f5a08c79df35e Beau Belgrave 2022-01-18 1830 * added. But the user retrieved from indexing into the events array
7f5a08c79df35e Beau Belgrave 2022-01-18 1831 * shall be immutable while the file is opened.
7f5a08c79df35e Beau Belgrave 2022-01-18 1832 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1833 if (likely(refs && idx < refs->count))
7f5a08c79df35e Beau Belgrave 2022-01-18 1834 user = refs->events[idx];
7f5a08c79df35e Beau Belgrave 2022-01-18 1835
7f5a08c79df35e Beau Belgrave 2022-01-18 1836 rcu_read_unlock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1837
7f5a08c79df35e Beau Belgrave 2022-01-18 1838 if (unlikely(user == NULL))
7f5a08c79df35e Beau Belgrave 2022-01-18 1839 return -ENOENT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1840
2467cda1b5c97a Beau Belgrave 2022-01-18 1841 if (unlikely(i->count < user->min_size))
2467cda1b5c97a Beau Belgrave 2022-01-18 1842 return -EINVAL;
2467cda1b5c97a Beau Belgrave 2022-01-18 1843
7f5a08c79df35e Beau Belgrave 2022-01-18 1844 tp = &user->tracepoint;
7f5a08c79df35e Beau Belgrave 2022-01-18 1845
7f5a08c79df35e Beau Belgrave 2022-01-18 1846 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1847 * It's possible key.enabled disables after this check, however
7f5a08c79df35e Beau Belgrave 2022-01-18 1848 * we don't mind if a few events are included in this condition.
7f5a08c79df35e Beau Belgrave 2022-01-18 1849 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1850 if (likely(atomic_read(&tp->key.enabled) > 0)) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1851 struct tracepoint_func *probe_func_ptr;
7f5a08c79df35e Beau Belgrave 2022-01-18 1852 user_event_func_t probe_func;
0279400ad38d85 Beau Belgrave 2022-01-18 1853 struct iov_iter copy;
7f5a08c79df35e Beau Belgrave 2022-01-18 1854 void *tpdata;
2467cda1b5c97a Beau Belgrave 2022-01-18 1855 bool faulted;
7f5a08c79df35e Beau Belgrave 2022-01-18 1856
0279400ad38d85 Beau Belgrave 2022-01-18 1857 if (unlikely(fault_in_iov_iter_readable(i, i->count)))
0279400ad38d85 Beau Belgrave 2022-01-18 1858 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1859
2467cda1b5c97a Beau Belgrave 2022-01-18 1860 faulted = false;
2467cda1b5c97a Beau Belgrave 2022-01-18 1861
7f5a08c79df35e Beau Belgrave 2022-01-18 1862 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1863
7f5a08c79df35e Beau Belgrave 2022-01-18 1864 probe_func_ptr = rcu_dereference_sched(tp->funcs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1865
7f5a08c79df35e Beau Belgrave 2022-01-18 1866 if (probe_func_ptr) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1867 do {
0279400ad38d85 Beau Belgrave 2022-01-18 1868 copy = *i;
7f5a08c79df35e Beau Belgrave 2022-01-18 1869 probe_func = probe_func_ptr->func;
7f5a08c79df35e Beau Belgrave 2022-01-18 1870 tpdata = probe_func_ptr->data;
2467cda1b5c97a Beau Belgrave 2022-01-18 1871 probe_func(user, ©, tpdata, &faulted);
7f5a08c79df35e Beau Belgrave 2022-01-18 1872 } while ((++probe_func_ptr)->func);
7f5a08c79df35e Beau Belgrave 2022-01-18 1873 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1874
7f5a08c79df35e Beau Belgrave 2022-01-18 1875 rcu_read_unlock_sched();
2467cda1b5c97a Beau Belgrave 2022-01-18 1876
2467cda1b5c97a Beau Belgrave 2022-01-18 1877 if (unlikely(faulted))
2467cda1b5c97a Beau Belgrave 2022-01-18 1878 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1879 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1880
7f5a08c79df35e Beau Belgrave 2022-01-18 1881 return ret;
7f5a08c79df35e Beau Belgrave 2022-01-18 1882 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1883
:::::: The code at line 1826 was first introduced by commit
:::::: e5d271812e7a4d527e65b0228b4a16795c0e0c6c tracing/user_events: Move pages/locks into groups to prepare for namespaces
:::::: TO: Beau Belgrave <beaub@linux.microsoft.com>
:::::: CC: Steven Rostedt (Google) <rostedt@goodmis.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
@ 2023-11-11 15:06 kernel test robot
2023-11-13 1:08 ` Liu, Yujie
0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2023-11-11 15:06 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "only kconfig file changed"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Steven Rostedt (Google)" <rostedt@goodmis.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 3ca112b71f35dd5d99fc4571a56b5fc6f0c15814
commit: 88fe1ec75fcb296579e05eaf3807da3ee83137e4 tracing: Unbreak user events
date: 8 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 8 months ago
config: i386-randconfig-062-20230909 (https://download.01.org/0day-ci/archive/20231111/202311112237.hC0R2SES-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231111/202311112237.hC0R2SES-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202311112237.hC0R2SES-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs [noderef] __rcu *
>> kernel/trace/trace_events_user.c:1826:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1934:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1934:16: sparse: struct user_event_refs *
kernel/trace/trace_events_user.c:1961:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs [noderef] __rcu *
kernel/trace/trace_events_user.c:1961:9: sparse: struct user_event_refs *
vim +1826 kernel/trace/trace_events_user.c
7f5a08c79df35e Beau Belgrave 2022-01-18 1808
7f5a08c79df35e Beau Belgrave 2022-01-18 1809 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1810 * Validates the user payload and writes via iterator.
7f5a08c79df35e Beau Belgrave 2022-01-18 1811 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1812 static ssize_t user_events_write_core(struct file *file, struct iov_iter *i)
7f5a08c79df35e Beau Belgrave 2022-01-18 1813 {
e5d271812e7a4d Beau Belgrave 2022-09-30 1814 struct user_event_file_info *info = file->private_data;
7f5a08c79df35e Beau Belgrave 2022-01-18 1815 struct user_event_refs *refs;
7f5a08c79df35e Beau Belgrave 2022-01-18 1816 struct user_event *user = NULL;
7f5a08c79df35e Beau Belgrave 2022-01-18 1817 struct tracepoint *tp;
7f5a08c79df35e Beau Belgrave 2022-01-18 1818 ssize_t ret = i->count;
7f5a08c79df35e Beau Belgrave 2022-01-18 1819 int idx;
7f5a08c79df35e Beau Belgrave 2022-01-18 1820
7f5a08c79df35e Beau Belgrave 2022-01-18 1821 if (unlikely(copy_from_iter(&idx, sizeof(idx), i) != sizeof(idx)))
7f5a08c79df35e Beau Belgrave 2022-01-18 1822 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1823
7f5a08c79df35e Beau Belgrave 2022-01-18 1824 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1825
e5d271812e7a4d Beau Belgrave 2022-09-30 @1826 refs = rcu_dereference_sched(info->refs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1827
7f5a08c79df35e Beau Belgrave 2022-01-18 1828 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1829 * The refs->events array is protected by RCU, and new items may be
7f5a08c79df35e Beau Belgrave 2022-01-18 1830 * added. But the user retrieved from indexing into the events array
7f5a08c79df35e Beau Belgrave 2022-01-18 1831 * shall be immutable while the file is opened.
7f5a08c79df35e Beau Belgrave 2022-01-18 1832 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1833 if (likely(refs && idx < refs->count))
7f5a08c79df35e Beau Belgrave 2022-01-18 1834 user = refs->events[idx];
7f5a08c79df35e Beau Belgrave 2022-01-18 1835
7f5a08c79df35e Beau Belgrave 2022-01-18 1836 rcu_read_unlock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1837
7f5a08c79df35e Beau Belgrave 2022-01-18 1838 if (unlikely(user == NULL))
7f5a08c79df35e Beau Belgrave 2022-01-18 1839 return -ENOENT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1840
2467cda1b5c97a Beau Belgrave 2022-01-18 1841 if (unlikely(i->count < user->min_size))
2467cda1b5c97a Beau Belgrave 2022-01-18 1842 return -EINVAL;
2467cda1b5c97a Beau Belgrave 2022-01-18 1843
7f5a08c79df35e Beau Belgrave 2022-01-18 1844 tp = &user->tracepoint;
7f5a08c79df35e Beau Belgrave 2022-01-18 1845
7f5a08c79df35e Beau Belgrave 2022-01-18 1846 /*
7f5a08c79df35e Beau Belgrave 2022-01-18 1847 * It's possible key.enabled disables after this check, however
7f5a08c79df35e Beau Belgrave 2022-01-18 1848 * we don't mind if a few events are included in this condition.
7f5a08c79df35e Beau Belgrave 2022-01-18 1849 */
7f5a08c79df35e Beau Belgrave 2022-01-18 1850 if (likely(atomic_read(&tp->key.enabled) > 0)) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1851 struct tracepoint_func *probe_func_ptr;
7f5a08c79df35e Beau Belgrave 2022-01-18 1852 user_event_func_t probe_func;
0279400ad38d85 Beau Belgrave 2022-01-18 1853 struct iov_iter copy;
7f5a08c79df35e Beau Belgrave 2022-01-18 1854 void *tpdata;
2467cda1b5c97a Beau Belgrave 2022-01-18 1855 bool faulted;
7f5a08c79df35e Beau Belgrave 2022-01-18 1856
0279400ad38d85 Beau Belgrave 2022-01-18 1857 if (unlikely(fault_in_iov_iter_readable(i, i->count)))
0279400ad38d85 Beau Belgrave 2022-01-18 1858 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1859
2467cda1b5c97a Beau Belgrave 2022-01-18 1860 faulted = false;
2467cda1b5c97a Beau Belgrave 2022-01-18 1861
7f5a08c79df35e Beau Belgrave 2022-01-18 1862 rcu_read_lock_sched();
7f5a08c79df35e Beau Belgrave 2022-01-18 1863
7f5a08c79df35e Beau Belgrave 2022-01-18 1864 probe_func_ptr = rcu_dereference_sched(tp->funcs);
7f5a08c79df35e Beau Belgrave 2022-01-18 1865
7f5a08c79df35e Beau Belgrave 2022-01-18 1866 if (probe_func_ptr) {
7f5a08c79df35e Beau Belgrave 2022-01-18 1867 do {
0279400ad38d85 Beau Belgrave 2022-01-18 1868 copy = *i;
7f5a08c79df35e Beau Belgrave 2022-01-18 1869 probe_func = probe_func_ptr->func;
7f5a08c79df35e Beau Belgrave 2022-01-18 1870 tpdata = probe_func_ptr->data;
2467cda1b5c97a Beau Belgrave 2022-01-18 1871 probe_func(user, ©, tpdata, &faulted);
7f5a08c79df35e Beau Belgrave 2022-01-18 1872 } while ((++probe_func_ptr)->func);
7f5a08c79df35e Beau Belgrave 2022-01-18 1873 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1874
7f5a08c79df35e Beau Belgrave 2022-01-18 1875 rcu_read_unlock_sched();
2467cda1b5c97a Beau Belgrave 2022-01-18 1876
2467cda1b5c97a Beau Belgrave 2022-01-18 1877 if (unlikely(faulted))
2467cda1b5c97a Beau Belgrave 2022-01-18 1878 return -EFAULT;
7f5a08c79df35e Beau Belgrave 2022-01-18 1879 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1880
7f5a08c79df35e Beau Belgrave 2022-01-18 1881 return ret;
7f5a08c79df35e Beau Belgrave 2022-01-18 1882 }
7f5a08c79df35e Beau Belgrave 2022-01-18 1883
:::::: The code at line 1826 was first introduced by commit
:::::: e5d271812e7a4d527e65b0228b4a16795c0e0c6c tracing/user_events: Move pages/locks into groups to prepare for namespaces
:::::: TO: Beau Belgrave <beaub@linux.microsoft.com>
:::::: CC: Steven Rostedt (Google) <rostedt@goodmis.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-18 2:09 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-14 13:35 kernel/trace/trace_events_user.c:1826:16: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel test robot
2023-12-18 2:09 ` Liu, Yujie
-- strict thread matches above, loose matches on Subject: below --
2023-11-11 15:06 kernel test robot
2023-11-13 1:08 ` Liu, Yujie
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.