Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers/gpio/gpio-generic.c: fix build errors

Building a kernel with hotplug disabled results in a link failure:

`bgpio_remove' referenced in section `___ksymtab_gpl+bgpio_remove' of drivers/built-in.o: defined in discarded section `.devexit.text' of drivers/built-in.o

This is because of bgpio_remove() is exported. It is illegal to export
symbols which are discarded either at link time or as part of an
init/exit section.

Fix this by dropping the __devexit attributation from bgpio_remove().
Also drop the __devinit attributation from bgpio_init().

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Russell King and committed by
Linus Torvalds
4f5b0480 fa2563e4

+10 -20
+5 -10
drivers/gpio/gpio-generic.c
··· 351 351 return 0; 352 352 } 353 353 354 - int __devexit bgpio_remove(struct bgpio_chip *bgc) 354 + int bgpio_remove(struct bgpio_chip *bgc) 355 355 { 356 356 int err = gpiochip_remove(&bgc->gc); 357 357 ··· 361 361 } 362 362 EXPORT_SYMBOL_GPL(bgpio_remove); 363 363 364 - int __devinit bgpio_init(struct bgpio_chip *bgc, 365 - struct device *dev, 366 - unsigned long sz, 367 - void __iomem *dat, 368 - void __iomem *set, 369 - void __iomem *clr, 370 - void __iomem *dirout, 371 - void __iomem *dirin, 372 - bool big_endian) 364 + int bgpio_init(struct bgpio_chip *bgc, struct device *dev, 365 + unsigned long sz, void __iomem *dat, void __iomem *set, 366 + void __iomem *clr, void __iomem *dirout, void __iomem *dirin, 367 + bool big_endian) 373 368 { 374 369 int ret; 375 370
+5 -10
include/linux/basic_mmio_gpio.h
··· 63 63 return container_of(gc, struct bgpio_chip, gc); 64 64 } 65 65 66 - int __devexit bgpio_remove(struct bgpio_chip *bgc); 67 - int __devinit bgpio_init(struct bgpio_chip *bgc, 68 - struct device *dev, 69 - unsigned long sz, 70 - void __iomem *dat, 71 - void __iomem *set, 72 - void __iomem *clr, 73 - void __iomem *dirout, 74 - void __iomem *dirin, 75 - bool big_endian); 66 + int bgpio_remove(struct bgpio_chip *bgc); 67 + int bgpio_init(struct bgpio_chip *bgc, struct device *dev, 68 + unsigned long sz, void __iomem *dat, void __iomem *set, 69 + void __iomem *clr, void __iomem *dirout, void __iomem *dirin, 70 + bool big_endian); 76 71 77 72 #endif /* __BASIC_MMIO_GPIO_H */