diff mbox series

PCI: fix possible null-pointer dereference about devname

Message ID 20221121020029.3759444-1-zengheng4@huawei.com (mailing list archive)
State Accepted
Headers show
Series PCI: fix possible null-pointer dereference about devname | expand

Commit Message

Zeng Heng Nov. 21, 2022, 2 a.m. UTC
When kvasprintf() fails to allocate memory, it would return
null-pointer. In case of null pointer dereferencing, fix it
by returning error number directly from the function.

Fixes: 704e8953d3e9 ("PCI/irq: Add pci_request_irq() and pci_free_irq() helpers")
Signed-off-by: Zeng Heng <zengheng4@huawei.com>
---
 drivers/pci/irq.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Bjorn Helgaas Nov. 21, 2022, 2:56 a.m. UTC | #1
[+cc Christoph, 704e8953d3e9 author]

On Mon, Nov 21, 2022 at 10:00:29AM +0800, Zeng Heng wrote:
> When kvasprintf() fails to allocate memory, it would return
> null-pointer. In case of null pointer dereferencing, fix it
> by returning error number directly from the function.
> 
> Fixes: 704e8953d3e9 ("PCI/irq: Add pci_request_irq() and pci_free_irq() helpers")
> Signed-off-by: Zeng Heng <zengheng4@huawei.com>
> ---
>  drivers/pci/irq.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/irq.c b/drivers/pci/irq.c
> index 12ecd0aaa28d..0050e8f6814e 100644
> --- a/drivers/pci/irq.c
> +++ b/drivers/pci/irq.c
> @@ -44,6 +44,8 @@ int pci_request_irq(struct pci_dev *dev, unsigned int nr, irq_handler_t handler,
>  	va_start(ap, fmt);
>  	devname = kvasprintf(GFP_KERNEL, fmt, ap);
>  	va_end(ap);
> +	if (!devname)
> +		return -ENOMEM;
>  
>  	ret = request_threaded_irq(pci_irq_vector(dev, nr), handler, thread_fn,
>  				   irqflags, devname, dev_id);
> -- 
> 2.25.1
>
Christoph Hellwig Nov. 21, 2022, 7:09 a.m. UTC | #2
On Sun, Nov 20, 2022 at 08:56:08PM -0600, Bjorn Helgaas wrote:
> [+cc Christoph, 704e8953d3e9 author]

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
Bjorn Helgaas Nov. 21, 2022, 10:58 p.m. UTC | #3
On Mon, Nov 21, 2022 at 10:00:29AM +0800, Zeng Heng wrote:
> When kvasprintf() fails to allocate memory, it would return
> null-pointer. In case of null pointer dereferencing, fix it
> by returning error number directly from the function.
> 
> Fixes: 704e8953d3e9 ("PCI/irq: Add pci_request_irq() and pci_free_irq() helpers")
> Signed-off-by: Zeng Heng <zengheng4@huawei.com>

Applied with Christoph's ack to pci/enumeration for v6.2, thanks!

> ---
>  drivers/pci/irq.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/irq.c b/drivers/pci/irq.c
> index 12ecd0aaa28d..0050e8f6814e 100644
> --- a/drivers/pci/irq.c
> +++ b/drivers/pci/irq.c
> @@ -44,6 +44,8 @@ int pci_request_irq(struct pci_dev *dev, unsigned int nr, irq_handler_t handler,
>  	va_start(ap, fmt);
>  	devname = kvasprintf(GFP_KERNEL, fmt, ap);
>  	va_end(ap);
> +	if (!devname)
> +		return -ENOMEM;
>  
>  	ret = request_threaded_irq(pci_irq_vector(dev, nr), handler, thread_fn,
>  				   irqflags, devname, dev_id);
> -- 
> 2.25.1
>
diff mbox series

Patch

diff --git a/drivers/pci/irq.c b/drivers/pci/irq.c
index 12ecd0aaa28d..0050e8f6814e 100644
--- a/drivers/pci/irq.c
+++ b/drivers/pci/irq.c
@@ -44,6 +44,8 @@  int pci_request_irq(struct pci_dev *dev, unsigned int nr, irq_handler_t handler,
 	va_start(ap, fmt);
 	devname = kvasprintf(GFP_KERNEL, fmt, ap);
 	va_end(ap);
+	if (!devname)
+		return -ENOMEM;
 
 	ret = request_threaded_irq(pci_irq_vector(dev, nr), handler, thread_fn,
 				   irqflags, devname, dev_id);