platform driver: fix incorrect use of 'platform_bus_type' with 'struct device_driver'
authorMing Lei <tom.leiming@gmail.com>
Fri, 6 Feb 2009 15:40:12 +0000 (23:40 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Mar 2009 23:38:25 +0000 (16:38 -0700)
commit7a192ec334cab9fafe3a8665a65af398b0e24730
treeeea572863500f94d446cfded69835e188dba3447
parent6da2d377bba06c29d0bc41c8dee014164dec82a7
platform driver: fix incorrect use of 'platform_bus_type' with 'struct device_driver'

This patch fixes the bug reported in
http://bugzilla.kernel.org/show_bug.cgi?id=11681.

"Lots of device drivers register a 'struct device_driver' with
the '.bus' member set to '&platform_bus_type'. This is wrong,
since the platform_bus functions expect the 'struct device_driver'
to be wrapped up in a 'struct platform_driver' which provides
some additional callbacks (like suspend_late, resume_early).
The effect may be that platform_suspend_late() uses bogus data
outside the device_driver struct as a pointer pointer to the
device driver's suspend_late() function or other hard to
reproduce failures."(Lothar Wassmann)

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
21 files changed:
arch/mips/basler/excite/excite_iodev.c
drivers/char/tpm/tpm_atmel.c
drivers/char/tpm/tpm_tis.c
drivers/ide/au1xxx-ide.c
drivers/mtd/maps/pxa2xx-flash.c
drivers/mtd/nand/excite_nandflash.c
drivers/mtd/onenand/generic.c
drivers/net/mipsnet.c
drivers/pcmcia/au1000_generic.c
drivers/pcmcia/i82365.c
drivers/pcmcia/m32r_cfc.c
drivers/pcmcia/m32r_pcc.c
drivers/pcmcia/sa1100_generic.c
drivers/pcmcia/tcic.c
drivers/pcmcia/vrc4171_card.c
drivers/scsi/a4000t.c
drivers/scsi/bvme6000_scsi.c
drivers/scsi/mvme16x_scsi.c
drivers/video/au1100fb.c
drivers/video/au1200fb.c
drivers/watchdog/rm9k_wdt.c