2005-02-04 03:29:57

by MUNEDA Takahiro

[permalink] [raw]
Subject: [PATCH] PCI: fix pci_remove_legacy_files() crash

Hi,

The legacy_io which is the member of pci_bus struct might be
NULL. It should be checked.

This patch checks 'b->legacy_io', NULL or not.

Signed-off-by: MUNEDA Takahiro <[email protected]>

---

probe.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)

diff -Npur a/drivers/pci/probe.c b/drivers/pci/probe.c
--- a/drivers/pci/probe.c 2005-01-31 13:31:27.000000000 +0900
+++ b/drivers/pci/probe.c 2005-02-03 11:21:51.000000000 +0900
@@ -64,9 +64,11 @@ static void pci_create_legacy_files(stru

void pci_remove_legacy_files(struct pci_bus *b)
{
- class_device_remove_bin_file(&b->class_dev, b->legacy_io);
- class_device_remove_bin_file(&b->class_dev, b->legacy_mem);
- kfree(b->legacy_io); /* both are allocated here */
+ if (b->legacy_io) {
+ class_device_remove_bin_file(&b->class_dev, b->legacy_io);
+ class_device_remove_bin_file(&b->class_dev, b->legacy_mem);
+ kfree(b->legacy_io); /* both are allocated here */
+ }
}
#else /* !HAVE_PCI_LEGACY */
static inline void pci_create_legacy_files(struct pci_bus *bus) { return; }


2005-02-04 16:46:57

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix pci_remove_legacy_files() crash

On Thursday, February 3, 2005 7:28 pm, MUNEDA Takahiro wrote:
> Hi,
>
> The legacy_io which is the member of pci_bus struct might be
> NULL. It should be checked.
>
> This patch checks 'b->legacy_io', NULL or not.
>
> Signed-off-by: MUNEDA Takahiro <[email protected]>
>
> ---
>
> probe.c | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff -Npur a/drivers/pci/probe.c b/drivers/pci/probe.c
> --- a/drivers/pci/probe.c 2005-01-31 13:31:27.000000000 +0900
> +++ b/drivers/pci/probe.c 2005-02-03 11:21:51.000000000 +0900
> @@ -64,9 +64,11 @@ static void pci_create_legacy_files(stru
>
> void pci_remove_legacy_files(struct pci_bus *b)
> {
> - class_device_remove_bin_file(&b->class_dev, b->legacy_io);
> - class_device_remove_bin_file(&b->class_dev, b->legacy_mem);
> - kfree(b->legacy_io); /* both are allocated here */
> + if (b->legacy_io) {
> + class_device_remove_bin_file(&b->class_dev, b->legacy_io);
> + class_device_remove_bin_file(&b->class_dev, b->legacy_mem);
> + kfree(b->legacy_io); /* both are allocated here */
> + }
> }
> #else /* !HAVE_PCI_LEGACY */
> static inline void pci_create_legacy_files(struct pci_bus *bus) { return;
> }

Thanks, though the case where b->legacy_io is NULL should be very rare (it'll
only happen if the initialization can't get memory for b->legacy_io), it's
still a possibility so this fix is needed.

Acked-by: Jesse Barnes <[email protected]>

2005-02-08 00:39:31

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix pci_remove_legacy_files() crash

On Fri, Feb 04, 2005 at 12:28:36PM +0900, MUNEDA Takahiro wrote:
> Hi,
>
> The legacy_io which is the member of pci_bus struct might be
> NULL. It should be checked.
>
> This patch checks 'b->legacy_io', NULL or not.
>
> Signed-off-by: MUNEDA Takahiro <[email protected]>

Applied, thanks.

greg k-h