[PATCH] Re: 2.4.23-pre2: 3c515.c doesn't compile non-modular

From: Jeff Garzik
Date: Tue Sep 02 2003 - 13:21:49 EST


Adrian Bunk wrote:
On Sat, Aug 30, 2003 at 12:48:22PM -0300, Marcelo Tosatti wrote:

...
Summary of changes from v2.4.23-pre1 to v2.4.23-pre2
============================================
...
Jeff Garzik:
...
o [netdrvr] ethtool_ops support for 3c515, 3c523, 3c527, and dmfe
...


This change broke non-modular compile of 3c515.c ("debug" is declared inside an #ifdef MODULE):

I'm pretty impressed that it broke, actually. "debug" is a weird pseudo-variable that's really another global variable underneath, corkscrew_debug... but MODULE_PARM() uses "debug". Sigh.

Further encouragement for me to convert net drivers over to Rusty's new module parameter stuff, I suppose. His stuff is at least type-checked, and would have caught this problem -- a big advantage over the 2.4.x MODULE_PARM() stuff.

...
gcc -D__KERNEL__ -I/home/bunk/linux/kernel-2.4/linux-2.4.23-pre2-full/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=k6 -nostdinc -iwithprefix include -DKBUILD_BASENAME=3c515 -c -o 3c515.o 3c515.c
3c515.c: In function `netdev_get_msglevel':
3c515.c:1621: error: `debug' undeclared (first use in this function)
3c515.c:1621: error: (Each undeclared identifier is reported only once
3c515.c:1621: error: for each function it appears in.)
3c515.c: In function `netdev_set_msglevel':
3c515.c:1626: error: `debug' undeclared (first use in this function)


Fixed. Linus, please apply.

Jeff


===== drivers/net/3c515.c 1.22 vs edited =====
--- 1.22/drivers/net/3c515.c Tue Aug 26 16:42:22 2003
+++ edited/drivers/net/3c515.c Tue Sep 2 13:44:18 2003
@@ -1590,12 +1590,12 @@

static u32 netdev_get_msglevel(struct net_device *dev)
{
- return debug;
+ return corkscrew_debug;
}

static void netdev_set_msglevel(struct net_device *dev, u32 level)
{
- debug = level;
+ corkscrew_debug = level;
}

static struct ethtool_ops netdev_ethtool_ops = {