mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
PCI/VGA: Pass vga_get_uninterruptible() errors to userspace
If VGA routing cannot be established, vga_get_uninterruptible() returns an error and does not increment the lock count. Return the error to the caller. Return before incrementing uc->io_cnt/mem_cnt so vga_arb_release() won't call vga_put() when userspace closes the handle. Signed-off-by: Simon Richter <Simon.Richter@hogyros.de> [bhelgaas: commit log] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://patch.msgid.link/20260307173538.763188-2-Simon.Richter@hogyros.de
This commit is contained in:
parent
6de23f81a5
commit
2a93c9851b
|
|
@ -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++) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user