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 >
