All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: Aditya Pakki <pakki001@umn.edu>
Cc: Kangjie Lu <kjlu@umn.edu>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jslaby@suse.com>, Vinod Koul <vkoul@kernel.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	"open list:SERIAL DRIVERS" <linux-serial@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] tty: 8250: fix a missing check for pci_ioremap_bar
Date: Sun, 24 Mar 2019 14:05:09 +0200	[thread overview]
Message-ID: <CAHp75VdeB=jPaqY_VNDA7YeCiEdyVFJAmOmC4sDvZLBv-7KQ0w@mail.gmail.com> (raw)
In-Reply-To: <20190323225313.12325-1-pakki001@umn.edu>

On Sun, Mar 24, 2019 at 12:55 AM Aditya Pakki <pakki001@umn.edu> wrote:
>
> pci_ioremap_bar could fail. The fix captures the failure and
> pass an error code upstream. This can avoid potential NULL
> pointer dereferences in the future.
>

NAK.
This will break non-DMA case.

> Signed-off-by: Aditya Pakki <pakki001@umn.edu>
>
> ---
> v1: Missed return by default in CONFIG_SERIAL_8250_DMA, suggested by
> Jiri Slaby
> ---
>  drivers/tty/serial/8250/8250_lpss.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_lpss.c b/drivers/tty/serial/8250/8250_lpss.c
> index 53ca9ba6ab4b..1dc67897dcf8 100644
> --- a/drivers/tty/serial/8250/8250_lpss.c
> +++ b/drivers/tty/serial/8250/8250_lpss.c
> @@ -161,7 +161,7 @@ static const struct dw_dma_platform_data qrk_serial_dma_pdata = {
>         .multi_block = {0},
>  };
>
> -static void qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
> +static int qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
>  {
>         struct uart_8250_dma *dma = &lpss->dma;
>         struct dw_dma_chip *chip = &lpss->dma_chip;
> @@ -172,12 +172,14 @@ static void qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
>         chip->dev = &pdev->dev;
>         chip->irq = pci_irq_vector(pdev, 0);
>         chip->regs = pci_ioremap_bar(pdev, 1);
> +       if (!chip->regs)
> +               return -EIO;
>         chip->pdata = &qrk_serial_dma_pdata;
>
>         /* Falling back to PIO mode if DMA probing fails */
>         ret = dw_dma_probe(chip);
>         if (ret)
> -               return;
> +               return ret;
>
>         pci_try_set_mwi(pdev);
>
> @@ -191,6 +193,7 @@ static void qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
>         param->hs_polarity = true;
>
>         lpss->dma_maxburst = 8;
> +       return 0;
>  }
>
>  static void qrk_serial_exit_dma(struct lpss8250 *lpss)
> @@ -202,7 +205,11 @@ static void qrk_serial_exit_dma(struct lpss8250 *lpss)
>         dw_dma_remove(&lpss->dma_chip);
>  }
>  #else  /* CONFIG_SERIAL_8250_DMA */
> -static void qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port) {}
> +static int qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
> +{
> +       return 0;
> +}
> +
>  static void qrk_serial_exit_dma(struct lpss8250 *lpss) {}
>  #endif /* !CONFIG_SERIAL_8250_DMA */
>
> @@ -219,8 +226,7 @@ static int qrk_serial_setup(struct lpss8250 *lpss, struct uart_port *port)
>
>         port->irq = pci_irq_vector(pdev, 0);
>
> -       qrk_serial_setup_dma(lpss, port);
> -       return 0;
> +       return qrk_serial_setup_dma(lpss, port);
>  }
>
>  static void qrk_serial_exit(struct lpss8250 *lpss)
> --
> 2.17.1
>


-- 
With Best Regards,
Andy Shevchenko

  reply	other threads:[~2019-03-24 12:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-23 22:53 [PATCH v2] tty: 8250: fix a missing check for pci_ioremap_bar Aditya Pakki
2019-03-24 12:05 ` Andy Shevchenko [this message]
2019-03-24 12:26   ` Andy Shevchenko
2019-03-24 12:31     ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHp75VdeB=jPaqY_VNDA7YeCiEdyVFJAmOmC4sDvZLBv-7KQ0w@mail.gmail.com' \
    --to=andy.shevchenko@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.com \
    --cc=kjlu@umn.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=pakki001@umn.edu \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.