Skip to content

Commit 67ec6dd

Browse files
andy-shevgregkh
authored andcommitted
serial: 8250_mid: Balance reference count for PCI DMA device
The pci_get_slot() increases its reference count, the caller must decrement the reference count by calling pci_dev_put(). Fixes: 90b9aac ("serial: 8250_pci: add Intel Tangier support") Fixes: f549e94 ("serial: 8250_pci: add Intel Penwell ports") Reported-by: Qing Wang <[email protected]> Signed-off-by: Andy Shevchenko <[email protected]> Depends-on: d9eda9b ("serial: 8250_pci: Intel MID UART support to its own driver") Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent c5e453f commit 67ec6dd

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

drivers/tty/serial/8250/8250_mid.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ static int pnw_setup(struct mid8250 *mid, struct uart_port *p)
7373
return 0;
7474
}
7575

76+
static void pnw_exit(struct mid8250 *mid)
77+
{
78+
pci_dev_put(mid->dma_dev);
79+
}
80+
7681
static int tng_handle_irq(struct uart_port *p)
7782
{
7883
struct mid8250 *mid = p->private_data;
@@ -124,6 +129,11 @@ static int tng_setup(struct mid8250 *mid, struct uart_port *p)
124129
return 0;
125130
}
126131

132+
static void tng_exit(struct mid8250 *mid)
133+
{
134+
pci_dev_put(mid->dma_dev);
135+
}
136+
127137
static int dnv_handle_irq(struct uart_port *p)
128138
{
129139
struct mid8250 *mid = p->private_data;
@@ -328,9 +338,9 @@ static int mid8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
328338

329339
pci_set_drvdata(pdev, mid);
330340
return 0;
341+
331342
err:
332-
if (mid->board->exit)
333-
mid->board->exit(mid);
343+
mid->board->exit(mid);
334344
return ret;
335345
}
336346

@@ -340,22 +350,23 @@ static void mid8250_remove(struct pci_dev *pdev)
340350

341351
serial8250_unregister_port(mid->line);
342352

343-
if (mid->board->exit)
344-
mid->board->exit(mid);
353+
mid->board->exit(mid);
345354
}
346355

347356
static const struct mid8250_board pnw_board = {
348357
.flags = FL_BASE0,
349358
.freq = 50000000,
350359
.base_baud = 115200,
351360
.setup = pnw_setup,
361+
.exit = pnw_exit,
352362
};
353363

354364
static const struct mid8250_board tng_board = {
355365
.flags = FL_BASE0,
356366
.freq = 38400000,
357367
.base_baud = 1843200,
358368
.setup = tng_setup,
369+
.exit = tng_exit,
359370
};
360371

361372
static const struct mid8250_board dnv_board = {

0 commit comments

Comments
 (0)