If vga_get fails, return the error code via the write syscall.

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 87143e235033..188885d30d41 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 (unlikely(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