• Simon Horman's avatar
    bonding: Pass string literal as format argument of alloc_ordered_workqueue() · 93b828cc
    Simon Horman authored
    Recently I noticed that both gcc-14 and clang-18 report that passing
    a non-string literal as the format argument of alloc_ordered_workqueue
    is potentially insecure.
    
    F.e. clang-18 says:
    
    .../bond_main.c:6384:37: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
     6384 |         bond->wq = alloc_ordered_workqueue(bond_dev->name, WQ_MEM_RECLAIM);
          |                                            ^~~~~~~~~~~~~~
    .../workqueue.h:524:18: note: expanded from macro 'alloc_ordered_workqueue'
      524 |         alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args)
          |                         ^~~
    .../bond_main.c:6384:37: note: treat the string as an argument to avoid this
     6384 |         bond->wq = alloc_ordered_workqueue(bond_dev->name, WQ_MEM_RECLAIM);
          |                                            ^
          |                                            "%s",
    ..../workqueue.h:524:18: note: expanded from macro 'alloc_ordered_workqueue'
      524 |         alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args)
          |                         ^
    
    Perhaps it is always the case where the contents of bond_dev->name is
    safe to pass as the format argument. That is, in my understanding, it
    never contains any format escape sequences.
    
    But, it seems better to be safe than sorry. And, as a bonus, compiler
    output becomes less verbose by addressing this issue as suggested by
    clang-18.
    Signed-off-by: default avatarSimon Horman <horms@kernel.org>
    Acked-by: default avatarJay Vosburgh <jv@jvosburgh.net>
    Link: https://patch.msgid.link/20240806-bonding-fmt-v1-1-e75027e45775@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    93b828cc
bond_main.c 177 KB