Linux 5.15: Convert osi_Msg macro to a function 91/14791/7
authorCheyenne Wills <cwills@sinenomine.net>
Tue, 14 Sep 2021 12:36:49 +0000 (06:36 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 16 Sep 2021 16:11:02 +0000 (12:11 -0400)
commit22876c8b88f8e5e92f08b230e5e1959499f0c406
tree382cd791a516be308dd9b991efb77778b2547f61
parent92222d023142b06ac148778263f6cef6115f9cfb
Linux 5.15: Convert osi_Msg macro to a function

With Linux 5.15-prerc1 printk is defined as a macro instead of a
function ("printk: Userspace format indexing support" 33701557)

This change is causing a build failure:

 .../src/rx/rx_kernel.h:62:18: error: ‘printk’ undeclared (first use in
   this function); did you mean ‘_printk’?
   62 | # define osi_Msg printk)(
      |                  ^~~~~~

The definition and use of the osi_Msg and osi_VMsg macros are
unconventional and the C preprocessor is not handling the macro
expansion when printk is itself a macro.

   #define osi_Msg printk)(
   ...
   (osi_Msg "%s", x);

Change osi_Msg to a function, and simply replace osi_VMsg with vprintf
since osi_VMsg is only used at one location within user space code.

osi_Msg is implemented in 2 locations, in rx_kcommon for kernel space
and in rx_user for userspace.

Note: The unconventional definitions of osi_Msg/osi_VMsg was historical
and due to older compilers not supporting variadic macros.  All of
the currently support platforms should now support variadic functions.

Change-Id: I9f015e4929f2c5120e200d2b0378871e8d1375b3
Reviewed-on: https://gerrit.openafs.org/14791
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/rx/rx.c
src/rx/rx_internal.h
src/rx/rx_kcommon.c
src/rx/rx_kernel.h
src/rx/rx_lwp.c
src/rx/rx_user.c
src/rx/rx_user.h