On Fri, 23 Dec 2016, Even Xu wrote:

[ ... snip ... ]
> +static ssize_t ishtp_cl_write(struct file *file, const char __user *ubuf,
> +     size_t length, loff_t *offset)
> +{
> +     struct ishtp_cl_miscdev *ishtp_cl_misc = file->private_data;
> +     struct ishtp_cl *cl;
> +     void *write_buf;
> +     struct ishtp_device *dev;
> +     int ret;
> +
> +     /* Non-blocking semantics are not supported */
> +     if (file->f_flags & O_NONBLOCK) {
> +             ret = -EINVAL;
> +             goto out_unlock;

When taking the error path here you'd try to unlock 
ishtp_cl_misc->cl_mutex before actually acquiring it.

-- 
Jiri Kosina
SUSE Labs

Reply via email to