Re: [PATCH] video: ep93xx-fb: add missing include of linux/module.h

From: Ryan Mallon
Date: Mon Aug 22 2011 - 19:48:28 EST


On 23/08/11 02:40, H Hartley Sweeten wrote:
On Sunday, August 21, 2011 5:31 PM, Ryan Mallon wrote:
On 22/08/11 10:06, Axel Lin wrote:
2011/8/22 Ryan Mallon<rmallon@xxxxxxxxx>:
On 22/08/11 09:41, Ryan Mallon wrote:
On 22/08/11 00:39, Axel Lin wrote:
ep93xx-fb.c uses interfaces from linux/module.h,
so it should include that file. This patch fixes below build errors.
What actually changed to make these files broken? Did some other header
previously include module.h for us? How many other drivers are broken?

Anyway, the change is okay.

Acked-by: Ryan Mallon<rmallon@xxxxxxxxx>
Actually, having a second look at this it does not look right.

drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
which includes linux/driver.h, which includes linux/module.h.

Just tested on Linus' latest tree and both this driver and the ep93xx
backlight driver build fine. What kernel version are you using?

~Ryan
hi Ryan,

The patch is against linux-next tree.
I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
( next-20110819 )
Ok, I see now. The change which caused the breakage is fdb697c:
"include: replace linux/module.h with "struct module" wherever
possible". How many other drivers got broken now that device.h does not
include module.h?
Probably a lot... Which is one of the reasons linux-next exists.. . ;-)

Does anybody know how we can quickly determine which drivers are broken short of doing an allyesconfig? I tried to do some quick tricks by passing files which contain THIS_MODULE/MODULE_* through cpp, but I get loads of errors in headers files because I'm missing some config includes. Is there an easy way to get the kbuild arguments for the current .config so I can pass them to cpp?

Actually, Paul Gortmaker caused this breakage with the commit. He should
take a deeper look and see what it broke. From his commit:

Most of the implicit dependencies on module.h being present by
these headers pulling it in have been now weeded out, so we can
finally make this change with hopefully minimal breakage.

Quick glance:

ryanm@kiwi:linux-2.6$ grep -lR "^MODULE_" drivers/ | xargs grep -L "linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h" | wc -l
579

ryanm@kiwi:linux-2.6$ grep -lR "THIS_MODULE" drivers/ | xargs grep -L "linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h\|linux/export.h\|acpi/platform/aclinux.h\|xen/xenbus.h" | wc -l
399

Not sure how many of those are really broken though since there may be a few other ways to include module.h/export.h. I would also think there would be a lot more build failure reports if all of those were broken :-).

~Ryan



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/