diff options
| author | Grant Likely <grant.likely@secretlab.ca> | 2010-07-24 09:49:13 -0600 | 
|---|---|---|
| committer | Grant Likely <grant.likely@secretlab.ca> | 2010-07-24 09:49:13 -0600 | 
| commit | 4e4f62bf7396fca48efe61513640ee399a6046e3 (patch) | |
| tree | 42a503af02d9806bcc05e5fcc2cd53f9bd45b0c2 /drivers/serial/sunsu.c | |
| parent | 9e3288dc9a94fab5ea87db42177d3a9e0345a614 (diff) | |
| parent | b37fa16e78d6f9790462b3181602a26b5af36260 (diff) | |
| download | olio-linux-3.10-4e4f62bf7396fca48efe61513640ee399a6046e3.tar.xz olio-linux-3.10-4e4f62bf7396fca48efe61513640ee399a6046e3.zip  | |
Merge commit 'v2.6.35-rc6' into devicetree/next
Conflicts:
	arch/sparc/kernel/prom_64.c
Diffstat (limited to 'drivers/serial/sunsu.c')
| -rw-r--r-- | drivers/serial/sunsu.c | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 56d891acf29..5deafc8180b 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c @@ -1500,20 +1500,25 @@ out_unmap:  static int __devexit su_remove(struct of_device *op)  {  	struct uart_sunsu_port *up = dev_get_drvdata(&op->dev); +	bool kbdms = false;  	if (up->su_type == SU_PORT_MS || -	    up->su_type == SU_PORT_KBD) { +	    up->su_type == SU_PORT_KBD) +		kbdms = true; + +	if (kbdms) {  #ifdef CONFIG_SERIO  		serio_unregister_port(&up->serio);  #endif -		kfree(up); -	} else if (up->port.type != PORT_UNKNOWN) { +	} else if (up->port.type != PORT_UNKNOWN)  		uart_remove_one_port(&sunsu_reg, &up->port); -	}  	if (up->port.membase)  		of_iounmap(&op->resource[0], up->port.membase, up->reg_size); +	if (kbdms) +		kfree(up); +  	dev_set_drvdata(&op->dev, NULL);  	return 0;  |