There are a couple paths where we don't check how much data we copy back
to the user.
Cc: Dave Jones <davej@redhat.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
        if (IoBuffer.InputLength > sizeof(gpio_multi_info))
                return -EINVAL;
+       if (IoBuffer.OutputLength > sizeof(gpio_multi_info))
+               IoBuffer.OutputLength = sizeof(gpio_multi_info);
 
        if (copy_from_user(&gpio_multi_info, IoBuffer.InputBuffer, IoBuffer.InputLength))
                return -EFAULT;
 
        if (IoBuffer.InputLength > sizeof(gpio_multi_mode))
                return -EINVAL;
+       if (IoBuffer.OutputLength > sizeof(gpio_multi_mode))
+               IoBuffer.OutputLength = sizeof(gpio_multi_mode);
 
        if (copy_from_user(&gpio_multi_mode, IoBuffer.InputBuffer, IoBuffer.InputLength))
                return -EFAULT;