public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] parport_pc: release IO region properly if unsupported ITE887x card is found
@ 2011-10-06 15:38 Jiri Kosina
  2011-10-06 16:48 ` Niels de Vos
  0 siblings, 1 reply; 2+ messages in thread
From: Jiri Kosina @ 2011-10-06 15:38 UTC (permalink / raw)
  To: Bjorn Helgaas, Niels de Vos, Alan Cox, Greg Kroah-Hartman
  Cc: Joe Krahn, Andrew Morton, Rich.Liu, linux-kernel

sio_ite_8872_probe() bails out if it detects no-parallel (1S, 2S) or unknown
card.

It doesn't call release_region() on the previously allocated resource though.
This causes

  (a) leak of the resource
  (b) kernel oops when parport module is removed and /proc/ioports is read. This
      is because the string that has been associated to the IO port region
      is a static char array inside the already removed module.

Let's call release_region() properly before baling out.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
 drivers/parport/parport_pc.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index d1cdb94..d0b597b 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -2595,14 +2595,17 @@ static int __devinit sio_ite_8872_probe(struct pci_dev *pdev, int autoirq,
 		break;
 	case 0x6:
 		printk(KERN_INFO "parport_pc: ITE8873 found (1S)\n");
+		release_region(inta_addr[i], 32);
 		return 0;
 	case 0x8:
 		printk(KERN_INFO "parport_pc: ITE8874 found (2S)\n");
+		release_region(inta_addr[i], 32);
 		return 0;
 	default:
 		printk(KERN_INFO "parport_pc: unknown ITE887x\n");
 		printk(KERN_INFO "parport_pc: please mail 'lspci -nvv' "
 			"output to Rich.Liu@ite.com.tw\n");
+		release_region(inta_addr[i], 32);
 		return 0;
 	}
 
-- 
1.7.3.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] parport_pc: release IO region properly if unsupported ITE887x card is found
  2011-10-06 15:38 [PATCH] parport_pc: release IO region properly if unsupported ITE887x card is found Jiri Kosina
@ 2011-10-06 16:48 ` Niels de Vos
  0 siblings, 0 replies; 2+ messages in thread
From: Niels de Vos @ 2011-10-06 16:48 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: Bjorn Helgaas, Alan Cox, Greg Kroah-Hartman, Joe Krahn,
	Andrew Morton, Rich.Liu, linux-kernel

On 10/06/2011 04:38 PM, Jiri Kosina wrote:
> sio_ite_8872_probe() bails out if it detects no-parallel (1S, 2S) or unknown
> card.
> 
> It doesn't call release_region() on the previously allocated resource though.
> This causes
> 
>   (a) leak of the resource
>   (b) kernel oops when parport module is removed and /proc/ioports is read. This
>       is because the string that has been associated to the IO port region
>       is a static char array inside the already removed module.
> 
> Let's call release_region() properly before baling out.
> 
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> ---
>  drivers/parport/parport_pc.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
> index d1cdb94..d0b597b 100644
> --- a/drivers/parport/parport_pc.c
> +++ b/drivers/parport/parport_pc.c
> @@ -2595,14 +2595,17 @@ static int __devinit sio_ite_8872_probe(struct pci_dev *pdev, int autoirq,
>  		break;
>  	case 0x6:
>  		printk(KERN_INFO "parport_pc: ITE8873 found (1S)\n");
> +		release_region(inta_addr[i], 32);
>  		return 0;
>  	case 0x8:
>  		printk(KERN_INFO "parport_pc: ITE8874 found (2S)\n");
> +		release_region(inta_addr[i], 32);
>  		return 0;
>  	default:
>  		printk(KERN_INFO "parport_pc: unknown ITE887x\n");
>  		printk(KERN_INFO "parport_pc: please mail 'lspci -nvv' "
>  			"output to Rich.Liu@ite.com.tw\n");
> +		release_region(inta_addr[i], 32);
>  		return 0;
>  	}
>  

Looks good to me, now release_region() is now consistent through the
whole of sio_ite_8872_probe().

Also verified that this is not an issue in drivers/tty/serial/8250_pci.c
where a similar logic for the same chip is used.

Acked-by: Niels de Vos <ndevos@redhat.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-10-06 17:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-06 15:38 [PATCH] parport_pc: release IO region properly if unsupported ITE887x card is found Jiri Kosina
2011-10-06 16:48 ` Niels de Vos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox