On Mon, 5 Aug 2019, Hillf Danton wrote:

> 1, no dev no open.
> 
> --- a/drivers/hid/usbhid/hiddev.c
> +++ b/drivers/hid/usbhid/hiddev.c
> @@ -284,6 +284,10 @@ static int hiddev_open(struct inode *ino
>       spin_unlock_irq(&list->hiddev->list_lock);
>  
>       mutex_lock(&hiddev->existancelock);
> +     if (!list->hiddev->exist) {
> +             res = -ENODEV;
> +             goto bail_unlock;
> +     }
>       if (!list->hiddev->open++)
>               if (list->hiddev->exist) {
>                       struct hid_device *hid = hiddev->hid;
> --
> 
> 2, list_del before vfree.
> 
> --- a/drivers/hid/usbhid/hiddev.c
> +++ b/drivers/hid/usbhid/hiddev.c
> @@ -300,6 +304,9 @@ bail_normal_power:
>       hid_hw_power(hid, PM_HINT_NORMAL);
>  bail_unlock:
>       mutex_unlock(&hiddev->existancelock);
> +     spin_lock_irq(&list->hiddev->list_lock);
> +     list_del(&list->node);
> +     spin_unlock_irq(&list->hiddev->list_lock);
>  bail:
>       file->private_data = NULL;
>       vfree(list);

Hilf,

both patches look good to me. Could you please resend them properly so 
that I could apply them? Thanks,

-- 
Jiri Kosina
SUSE Labs

Reply via email to