• Steven Rostedt (Google)'s avatar
    tracing/net_sched: Fix tracepoints that save qdisc_dev() as a string · 51270d57
    Steven Rostedt (Google) authored
    I'm updating __assign_str() and will be removing the second parameter. To
    make sure that it does not break anything, I make sure that it matches the
    __string() field, as that is where the string is actually going to be
    saved in. To make sure there's nothing that breaks, I added a WARN_ON() to
    make sure that what was used in __string() is the same that is used in
    __assign_str().
    
    In doing this change, an error was triggered as __assign_str() now expects
    the string passed in to be a char * value. I instead had the following
    warning:
    
    include/trace/events/qdisc.h: In function ‘trace_event_raw_event_qdisc_reset’:
    include/trace/events/qdisc.h:91:35: error: passing argument 1 of 'strcmp' from incompatible pointer type [-Werror=incompatible-pointer-types]
       91 |                 __assign_str(dev, qdisc_dev(q));
    
    That's because the qdisc_enqueue() and qdisc_reset() pass in qdisc_dev(q)
    to __assign_str() and to __string(). But that function returns a pointer
    to struct net_device and not a string.
    
    It appears that these events are just saving the pointer as a string and
    then reading it as a string as well.
    
    Use qdisc_dev(q)->name to save the device instead.
    
    Fixes: a34dac0b ("net_sched: add tracepoints for qdisc_reset() and qdisc_destroy()")
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    Reviewed-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    51270d57
qdisc.h 3.79 KB