* [peterz-queue:locking/jump_label 19/30] kernel/tracepoint.c:296 tracepoint_remove_func() error: we previously assumed 'tp_funcs' could be null (see line 286)
@ 2019-10-09 19:14 ` Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2019-10-09 19:14 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 4040 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git locking/jump_label
head: ef36041eb3c323ddc4050649298755a82b367782
commit: 0e669b8d46545cae6903cb0dd6fbfb4058728ce1 [19/30] tracepoints: Use static_call
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
kernel/tracepoint.c:296 tracepoint_remove_func() error: we previously assumed 'tp_funcs' could be null (see line 286)
# https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=0e669b8d46545cae6903cb0dd6fbfb4058728ce1
git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git remote update peterz-queue
git checkout 0e669b8d46545cae6903cb0dd6fbfb4058728ce1
vim +/tp_funcs +296 kernel/tracepoint.c
de7b2973903c6c Mathieu Desnoyers 2014-04-08 272 static int tracepoint_remove_func(struct tracepoint *tp,
de7b2973903c6c Mathieu Desnoyers 2014-04-08 273 struct tracepoint_func *func)
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 274 {
de7b2973903c6c Mathieu Desnoyers 2014-04-08 275 struct tracepoint_func *old, *tp_funcs;
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 276) int probes_left = 0;
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 277
b725dfea24b89d Mathieu Desnoyers 2014-04-09 278 tp_funcs = rcu_dereference_protected(tp->funcs,
b725dfea24b89d Mathieu Desnoyers 2014-04-09 279 lockdep_is_held(&tracepoints_mutex));
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 280) old = func_remove(&tp_funcs, func, &probes_left);
I'm looking at FETCH_HEAD and func_remove() doesn't touch/use
probes_left.
de7b2973903c6c Mathieu Desnoyers 2014-04-08 281 if (IS_ERR(old)) {
d66a270be3310d Mathieu Desnoyers 2018-03-15 282 WARN_ON_ONCE(PTR_ERR(old) != -ENOMEM);
de7b2973903c6c Mathieu Desnoyers 2014-04-08 283 return PTR_ERR(old);
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 284 }
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 285
de7b2973903c6c Mathieu Desnoyers 2014-04-08 @286 if (!tp_funcs) {
de7b2973903c6c Mathieu Desnoyers 2014-04-08 287 /* Removed last function */
de7b2973903c6c Mathieu Desnoyers 2014-04-08 288 if (tp->unregfunc && static_key_enabled(&tp->key))
de7b2973903c6c Mathieu Desnoyers 2014-04-08 289 tp->unregfunc();
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 290
de7b2973903c6c Mathieu Desnoyers 2014-04-08 291 if (static_key_enabled(&tp->key))
de7b2973903c6c Mathieu Desnoyers 2014-04-08 292 static_key_slow_dec(&tp->key);
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 293 }
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 294)
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 295) __static_call_update(tp->static_call_key, tp->static_call_tramp,
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 @296) probes_left == 1 ? tp_funcs->func : tp->iterator);
So Smatch says that "The 'probes_left == 1' condition is impossible, so
probably that just means I'm confused so I'm going to ignore it." so
then it complains that it's not clear if "tp_funcs" is NULL or not.
I could silence this false positive if I added an if statement:
if (is_impossible_path())
return;
I do that for some warnings but not for this one.
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 297)
de7b2973903c6c Mathieu Desnoyers 2014-04-08 298 rcu_assign_pointer(tp->funcs, tp_funcs);
8058bd0faad860 Mathieu Desnoyers 2014-05-08 299 release_probes(old);
de7b2973903c6c Mathieu Desnoyers 2014-04-08 300 return 0;
127cafbb276266 Lai Jiangshan 2008-10-28 301 }
127cafbb276266 Lai Jiangshan 2008-10-28 302
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 2+ messages in thread
* [peterz-queue:locking/jump_label 19/30] kernel/tracepoint.c:296 tracepoint_remove_func() error: we previously assumed 'tp_funcs' could be null (see line 286)
@ 2019-10-09 19:14 ` Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2019-10-09 19:14 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 4040 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git locking/jump_label
head: ef36041eb3c323ddc4050649298755a82b367782
commit: 0e669b8d46545cae6903cb0dd6fbfb4058728ce1 [19/30] tracepoints: Use static_call
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
kernel/tracepoint.c:296 tracepoint_remove_func() error: we previously assumed 'tp_funcs' could be null (see line 286)
# https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=0e669b8d46545cae6903cb0dd6fbfb4058728ce1
git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git remote update peterz-queue
git checkout 0e669b8d46545cae6903cb0dd6fbfb4058728ce1
vim +/tp_funcs +296 kernel/tracepoint.c
de7b2973903c6c Mathieu Desnoyers 2014-04-08 272 static int tracepoint_remove_func(struct tracepoint *tp,
de7b2973903c6c Mathieu Desnoyers 2014-04-08 273 struct tracepoint_func *func)
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 274 {
de7b2973903c6c Mathieu Desnoyers 2014-04-08 275 struct tracepoint_func *old, *tp_funcs;
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 276) int probes_left = 0;
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 277
b725dfea24b89d Mathieu Desnoyers 2014-04-09 278 tp_funcs = rcu_dereference_protected(tp->funcs,
b725dfea24b89d Mathieu Desnoyers 2014-04-09 279 lockdep_is_held(&tracepoints_mutex));
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 280) old = func_remove(&tp_funcs, func, &probes_left);
I'm looking at FETCH_HEAD and func_remove() doesn't touch/use
probes_left.
de7b2973903c6c Mathieu Desnoyers 2014-04-08 281 if (IS_ERR(old)) {
d66a270be3310d Mathieu Desnoyers 2018-03-15 282 WARN_ON_ONCE(PTR_ERR(old) != -ENOMEM);
de7b2973903c6c Mathieu Desnoyers 2014-04-08 283 return PTR_ERR(old);
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 284 }
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 285
de7b2973903c6c Mathieu Desnoyers 2014-04-08 @286 if (!tp_funcs) {
de7b2973903c6c Mathieu Desnoyers 2014-04-08 287 /* Removed last function */
de7b2973903c6c Mathieu Desnoyers 2014-04-08 288 if (tp->unregfunc && static_key_enabled(&tp->key))
de7b2973903c6c Mathieu Desnoyers 2014-04-08 289 tp->unregfunc();
b75ef8b44b1cb9 Mathieu Desnoyers 2011-08-10 290
de7b2973903c6c Mathieu Desnoyers 2014-04-08 291 if (static_key_enabled(&tp->key))
de7b2973903c6c Mathieu Desnoyers 2014-04-08 292 static_key_slow_dec(&tp->key);
97e1c18e8d17bd Mathieu Desnoyers 2008-07-18 293 }
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 294)
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 295) __static_call_update(tp->static_call_key, tp->static_call_tramp,
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 @296) probes_left == 1 ? tp_funcs->func : tp->iterator);
So Smatch says that "The 'probes_left == 1' condition is impossible, so
probably that just means I'm confused so I'm going to ignore it." so
then it complains that it's not clear if "tp_funcs" is NULL or not.
I could silence this false positive if I added an if statement:
if (is_impossible_path())
return;
I do that for some warnings but not for this one.
0e669b8d46545c Steven Rostedt (VMware 2018-10-05 297)
de7b2973903c6c Mathieu Desnoyers 2014-04-08 298 rcu_assign_pointer(tp->funcs, tp_funcs);
8058bd0faad860 Mathieu Desnoyers 2014-05-08 299 release_probes(old);
de7b2973903c6c Mathieu Desnoyers 2014-04-08 300 return 0;
127cafbb276266 Lai Jiangshan 2008-10-28 301 }
127cafbb276266 Lai Jiangshan 2008-10-28 302
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-10-09 19:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-09 19:14 [peterz-queue:locking/jump_label 19/30] kernel/tracepoint.c:296 tracepoint_remove_func() error: we previously assumed 'tp_funcs' could be null (see line 286) Dan Carpenter
2019-10-09 19:14 ` Dan Carpenter
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.