On Sun, Mar 08, 2026 at 02:35:34AM +0900, Simon Richter wrote:
> If VGA routing cannot be established, vga_get_uninterruptible() returns an
> error and does not increment the lock count. Pass the error on, and don't
> call vga_put() when userspace closes the handle.

I applied this, but I'm a little confused about the "don't call
vga_put() when userspace closes the handle" part.  Does that happen in
this patch and I'm just missing it?  This patch changes the "lock"
case, and the only vga_put() call I see is in the "unlock" case.

> Signed-off-by: Simon Richter <[email protected]>
> ---
>  drivers/pci/vgaarb.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
> index d9383bf541e7..22b2b6ebdefd 100644
> --- a/drivers/pci/vgaarb.c
> +++ b/drivers/pci/vgaarb.c
> @@ -1134,6 +1134,7 @@ static ssize_t vga_arb_write(struct file *file, const 
> char __user *buf,
>       char kbuf[64], *curr_pos;
>       size_t remaining = count;
>  
> +     int err;
>       int ret_val;
>       int i;
>  
> @@ -1165,7 +1166,11 @@ static ssize_t vga_arb_write(struct file *file, const 
> char __user *buf,
>                       goto done;
>               }
>  
> -             vga_get_uninterruptible(pdev, io_state);
> +             err = vga_get_uninterruptible(pdev, io_state);
> +             if (err) {
> +                     ret_val = err;
> +                     goto done;
> +             }
>  
>               /* Update the client's locks lists */
>               for (i = 0; i < MAX_USER_CARDS; i++) {
> -- 
> 2.47.3
> 

Reply via email to