On Thu, 28 Jun 2012, Matthieu CASTET wrote:

> When using hidraw, hid buffer can be big and take lot's of
> time to process (interrupt) kernel context.
> Don't try to parse report if we are only interrested in hidraw.
> 
> Also don't prepare data for debug stuff if no debugfs file
> are opened.
> 
> Signed-off-by: Matthieu CASTET <matthieu.cas...@parrot.com>

Nice catch. Applied, thanks.

> ---
>  drivers/hid/hid-core.c    |   10 ++++++++--
>  drivers/hid/hid-picolcd.c |    2 +-
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 8e3a6b2..9f8f7c6 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1194,8 +1194,10 @@ int hid_report_raw_event(struct hid_device *hid, int 
> type, u8 *data, int size,
>                       goto out;
>       }
>  
> -     for (a = 0; a < report->maxfield; a++)
> -             hid_input_field(hid, report->field[a], cdata, interrupt);
> +     if (hid->claimed != HID_CLAIMED_HIDRAW) {
> +             for (a = 0; a < report->maxfield; a++)
> +                     hid_input_field(hid, report->field[a], cdata, 
> interrupt);
> +     }
>  
>       if (hid->claimed & HID_CLAIMED_INPUT)
>               hidinput_report_event(hid, report);
> @@ -1243,6 +1245,10 @@ int hid_input_report(struct hid_device *hid, int type, 
> u8 *data, int size, int i
>               goto unlock;
>       }
>  
> +     /* Avoid unnecessary overhead if debugfs is disabled */
> +     if (list_empty(&hid->debug_list))
> +             goto nomem;
> +
>       buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE, GFP_ATOMIC);
>  
>       if (!buf)
> diff --git a/drivers/hid/hid-picolcd.c b/drivers/hid/hid-picolcd.c
> index 45c3433..3e0a1e5 100644
> --- a/drivers/hid/hid-picolcd.c
> +++ b/drivers/hid/hid-picolcd.c
> @@ -1846,7 +1846,7 @@ static void picolcd_debug_out_report(struct 
> picolcd_data *data,
>  #define BUFF_SZ 256
>  
>       /* Avoid unnecessary overhead if debugfs is disabled */
> -     if (!hdev->debug_events)
> +     if (list_empty(&hdev->debug_list))
>               return;
>  
>       buff = kmalloc(BUFF_SZ, GFP_ATOMIC);
> -- 
> 1.7.10.4
> 

-- 
Jiri Kosina
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to