Re: [PATCH 1/2] HID: intel-ish-hid: add printf attribute to print_log()

From: Srinivas Pandruvada
Date: Thu Dec 22 2016 - 12:15:06 EST


On Thu, 2016-12-22 at 11:09 +0100, Nicolas Iooss wrote:
> Structure ishtp_device contains a logging function, print_log(),
> which
> formats some of its parameters using vsnprintf(). Add a __printf
> attribute to this function field (and to ish_event_tracer()) in order
> to
> detect at compile time issues related to the printf-like formatting.
>
> While at it, make format parameter a const pointer as print_log() is
> not
> supposed to modify it.
>
> Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@xxxxxxx>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>

> ---
> Âdrivers/hid/intel-ish-hid/ipc/pci-ish.cÂÂÂÂÂ| 3 ++-
> Âdrivers/hid/intel-ish-hid/ishtp/ishtp-dev.h | 3 ++-
> Â2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
> b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
> index 20d647d2dd2c..34c95de6885e 100644
> --- a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
> +++ b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
> @@ -47,7 +47,8 @@ MODULE_DEVICE_TABLE(pci, ish_pci_tbl);
> Â *
> Â * Callback to direct log messages to Linux trace buffers
> Â */
> -static void ish_event_tracer(struct ishtp_device *dev, char *format,
> ...)
> +static __printf(2, 3)
> +void ish_event_tracer(struct ishtp_device *dev, const char *format,
> ...)
> Â{
> Â if (trace_ishtp_dump_enabled()) {
> Â va_list args;
> diff --git a/drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h
> b/drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h
> index a94f9a8a96a0..6a6d927b78b0 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h
> +++ b/drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h
> @@ -238,7 +238,8 @@ struct ishtp_device {
> Â uint64_t ishtp_host_dma_rx_buf_phys;
> Â
> Â /* Dump to trace buffers if enabled*/
> - void (*print_log)(struct ishtp_device *dev, char *format,
> ...);
> + __printf(2, 3) void (*print_log)(struct ishtp_device *dev,
> + Âconst char *format, ...);
> Â
> Â /* Debug stats */
> Â unsigned int ipc_rx_cnt;