Re: [PATCH v1 1/1] serial: 8250_mid: Balance reference count for PCI DMA device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 15. 02. 22, 11:09, Andy Shevchenko wrote:
The pci_get_slot() increases its reference count, the caller
must decrement the reference count by calling pci_dev_put().

And what about the -EINVAL case?

Fixes: 90b9aacf912a ("serial: 8250_pci: add Intel Tangier support")
Fixes: f549e94effa1 ("serial: 8250_pci: add Intel Penwell ports")
Depends-on: d9eda9bab237 ("serial: 8250_pci: Intel MID UART support to its own driver")
Reported-by: Qing Wang <wangqing@xxxxxxxx>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
  drivers/tty/serial/8250/8250_mid.c | 19 +++++++++++++++----
  1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_mid.c b/drivers/tty/serial/8250/8250_mid.c
index efa0515139f8..e6c1791609dd 100644
--- a/drivers/tty/serial/8250/8250_mid.c
+++ b/drivers/tty/serial/8250/8250_mid.c
@@ -73,6 +73,11 @@ static int pnw_setup(struct mid8250 *mid, struct uart_port *p)
  	return 0;
  }
+static void pnw_exit(struct mid8250 *mid)
+{
+	pci_dev_put(mid->dma_dev);
+}
+
  static int tng_handle_irq(struct uart_port *p)
  {
  	struct mid8250 *mid = p->private_data;
@@ -124,6 +129,11 @@ static int tng_setup(struct mid8250 *mid, struct uart_port *p)
  	return 0;
  }
+static void tng_exit(struct mid8250 *mid)
+{
+	pci_dev_put(mid->dma_dev);
+}
+
  static int dnv_handle_irq(struct uart_port *p)
  {
  	struct mid8250 *mid = p->private_data;
@@ -330,9 +340,9 @@ static int mid8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
pci_set_drvdata(pdev, mid);
  	return 0;
+
  err:
-	if (mid->board->exit)
-		mid->board->exit(mid);
+	mid->board->exit(mid);
  	return ret;
  }
@@ -342,8 +352,7 @@ static void mid8250_remove(struct pci_dev *pdev) serial8250_unregister_port(mid->line); - if (mid->board->exit)
-		mid->board->exit(mid);
+	mid->board->exit(mid);
  }
static const struct mid8250_board pnw_board = {
@@ -351,6 +360,7 @@ static const struct mid8250_board pnw_board = {
  	.freq = 50000000,
  	.base_baud = 115200,
  	.setup = pnw_setup,
+	.exit = pnw_exit,
  };
static const struct mid8250_board tng_board = {
@@ -358,6 +368,7 @@ static const struct mid8250_board tng_board = {
  	.freq = 38400000,
  	.base_baud = 1843200,
  	.setup = tng_setup,
+	.exit = tng_exit,
  };
static const struct mid8250_board dnv_board = {


--
js
suse labs



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux