diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2023-01-26 12:18:29 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2023-01-26 12:18:29 -0600 |
commit | 78913b41945a256110184470dbfe4b27bfacd379 (patch) | |
tree | e4b50369b0e06b35fcde6c14cf4b530927838a25 | |
parent | 50264433e29b8675e4ec33e6ce44a7a28b5e2a6d (diff) | |
parent | ddc10938e08cd7aac63d8385f7305f7889df5179 (diff) | |
download | pci-next.tar.gz |
Merge branch 'remotes/lorenzo/pci/switchtec'next
- Return -EFAULT instead of unrelated codes for copy_to_user() errors
(Bjorn Helgaas)
* remotes/lorenzo/pci/switchtec:
PCI: switchtec: Return -EFAULT for copy_to_user() errors
PCI: switchtec: Simplify switchtec_dma_mrpc_isr()
-rw-r--r-- | drivers/pci/switch/switchtec.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 75be4fe2250905..3d6f17ff242996 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -606,21 +606,20 @@ static ssize_t switchtec_dev_read(struct file *filp, char __user *data, rc = copy_to_user(data, &stuser->return_code, sizeof(stuser->return_code)); if (rc) { - rc = -EFAULT; - goto out; + mutex_unlock(&stdev->mrpc_mutex); + return -EFAULT; } data += sizeof(stuser->return_code); rc = copy_to_user(data, &stuser->data, size - sizeof(stuser->return_code)); if (rc) { - rc = -EFAULT; - goto out; + mutex_unlock(&stdev->mrpc_mutex); + return -EFAULT; } stuser_set_state(stuser, MRPC_IDLE); -out: mutex_unlock(&stdev->mrpc_mutex); if (stuser->status == SWITCHTEC_MRPC_STATUS_DONE || @@ -1480,15 +1479,13 @@ static irqreturn_t switchtec_event_isr(int irq, void *dev) static irqreturn_t switchtec_dma_mrpc_isr(int irq, void *dev) { struct switchtec_dev *stdev = dev; - irqreturn_t ret = IRQ_NONE; iowrite32(SWITCHTEC_EVENT_CLEAR | SWITCHTEC_EVENT_EN_IRQ, &stdev->mmio_part_cfg->mrpc_comp_hdr); schedule_work(&stdev->mrpc_work); - ret = IRQ_HANDLED; - return ret; + return IRQ_HANDLED; } static int switchtec_init_isr(struct switchtec_dev *stdev) |