* Re: Linux 2.6.38-rc4 (hysdn: BUG)
[not found] <AANLkTimmb26UiBSukdNnVdxLJpCGd=QqpCw8vQoHALh-@mail.gmail.com>
@ 2011-02-09 17:24 ` Randy Dunlap
2011-02-09 19:44 ` Linus Torvalds
0 siblings, 1 reply; 5+ messages in thread
From: Randy Dunlap @ 2011-02-09 17:24 UTC (permalink / raw)
To: Linus Torvalds, netdev; +Cc: Linux Kernel Mailing List, Karsten Keil
on x86_64. no HYSDN hardware found (correct).
Nearly allmodconfig.
[ 65.397577] HYSDN: module Rev: 1.6.6.6 loaded
[ 65.397584] HYSDN: network interface Rev: 1.8.6.4
[ 65.398057] HYSDN: 0 card(s) found.
[ 65.398121] BUG: unable to handle kernel paging request at ffffffffa06c99f0
[ 65.398269] IP: [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
[ 65.398379] PGD 1a14067 PUD 1a18063 PMD 6f6c1067 PTE 800000006ce8c161
[ 65.398613] Oops: 0003 [#1] SMP DEBUG_PAGEALLOC
[ 65.398805] last sysfs file: /sys/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/irq
[ 65.398864] CPU 0
[ 65.398913] Modules linked in: hysdn(+) kernelcapi af_packet nfsd lockd nfs_acl auth_rpcgss exportfs sunrpc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT xt_tcpudp nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables x_tables ipv6 cpufreq_ondemand acpi_cpufreq freq_table mperf binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath scsi_dh dm_mod mousedev joydev evdev mac_hid snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_hwdep snd_seq usbmouse usbkbd snd_seq_device usbhid snd_pcm hid snd_timer 8250_pnp tg3 pcspkr sr_mod rtc_cmos dcdbas sg snd cdrom i2c_i801 rtc_core iTCO_wdt 8250 processor rtc_lib soundcore iTCO_vendor_support serial_core thermal_sys intel_agp snd_page_alloc intel_gtt button hwmon unix ide_pci_gener
ic ide_core ata_generic pata_acpi ata_piix sd_mod crc_t10dif ext3 jbd mbcache uhci_hcd ohci_hcd ssb mmc_core pcmcia pcmcia_core firmware_class ehci_hcd usbcore nls_base [last unloaded: micr!
ocode]
[ 65.400030]
[ 65.400030] Pid: 2497, comm: modprobe Not tainted 2.6.38-rc4 #1 0TY565/OptiPlex 745
[ 65.400030] RIP: 0010:[<ffffffffa06c68ba>] [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
[ 65.400030] RSP: 0018:ffff88006eec1e68 EFLAGS: 00010206
[ 65.400030] RAX: ffffffffa06c99f1 RBX: ffffffffa06c99e9 RCX: ffff88007c4159a0
[ 65.400030] RDX: 000000000c960c24 RSI: 0000000000000024 RDI: ffffffffa06c99e9
[ 65.400030] RBP: ffff88006eec1e78 R08: 0000000000000000 R09: 0000000000000000
[ 65.400030] R10: 0000000000000000 R11: ffffffff8124698c R12: ffff88006eec1e88
[ 65.400030] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[ 65.400030] FS: 00007fe1ae6c76f0(0000) GS:ffff88007c400000(0000) knlGS:0000000000000000
[ 65.400030] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 65.400030] CR2: ffffffffa06c99f0 CR3: 000000006eee3000 CR4: 00000000000006f0
[ 65.400030] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 65.400030] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 65.400030] Process modprobe (pid: 2497, threadinfo ffff88006eec0000, task ffff88006cf88000)
[ 65.400030] Stack:
[ 65.400030] ffff88006eec1e78 0000000000000000 ffff88006eec1eb8 ffffffffa06c3bf8
[ 65.400030] ffff88006cf88000 0000000000000000 0000000000000000 00000000b3346a0d
[ 65.400030] 0000000000000000 ffffffffa062b000 ffff88006eec1f18 ffffffffa062b0e2
[ 65.400030] Call Trace:
[ 65.400030] [<ffffffffa06c3bf8>] hysdn_procconf_init+0xf5/0x133 [hysdn]
[ 65.400030] [<ffffffffa062b000>] ? hysdn_init+0x0/0x1000 [hysdn]
[ 65.400030] [<ffffffffa062b0e2>] hysdn_init+0xe2/0x1000 [hysdn]
[ 65.400030] [<ffffffff810020e3>] do_one_initcall+0xa9/0x1ef
[ 65.400030] [<ffffffff810d6674>] sys_init_module+0x12b/0x307
[ 65.400030] [<ffffffff8100e942>] system_call_fastpath+0x16/0x1b
[ 65.400030] Code: e5 53 48 83 ec 08 0f 1f 44 00 00 be 3a 00 00 00 e8 71 39 c0 e0 48 85 c0 74 1e 48 8d 58 02 be 24 00 00 00 48 89 df e8 5b 39 c0 e0 <c6> 40 ff 00 48 ff 05 db 79 00 00 eb 0e 48 ff 05 da 79 00 00 48
[ 65.400030] RIP [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
[ 65.400030] RSP <ffff88006eec1e68>
[ 65.400030] CR2: ffffffffa06c99f0
[ 65.400030] ---[ end trace bf14fd4acc41f5a9 ]---
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Linux 2.6.38-rc4 (hysdn: BUG)
2011-02-09 17:24 ` Linux 2.6.38-rc4 (hysdn: BUG) Randy Dunlap
@ 2011-02-09 19:44 ` Linus Torvalds
2011-02-09 21:25 ` Randy Dunlap
0 siblings, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2011-02-09 19:44 UTC (permalink / raw)
To: Randy Dunlap; +Cc: netdev, Linux Kernel Mailing List, Karsten Keil
[-- Attachment #1: Type: text/plain, Size: 2424 bytes --]
On Wed, Feb 9, 2011 at 9:24 AM, Randy Dunlap <randy.dunlap@oracle.com> wrote:
>
> on x86_64. no HYSDN hardware found (correct).
> Nearly allmodconfig.
>
>
> [ 65.397577] HYSDN: module Rev: 1.6.6.6 loaded
> [ 65.397584] HYSDN: network interface Rev: 1.8.6.4
> [ 65.398057] HYSDN: 0 card(s) found.
> [ 65.398121] BUG: unable to handle kernel paging request at ffffffffa06c99f0
> [ 65.398269] IP: [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
> [ 65.398379] PGD 1a14067 PUD 1a18063 PMD 6f6c1067 PTE 800000006ce8c161
> [ 65.398613] Oops: 0003 [#1] SMP DEBUG_PAGEALLOC
> [ 65.400030]
> [ 65.400030] Pid: 2497, comm: modprobe Not tainted 2.6.38-rc4 #1 0TY565/OptiPlex 745
> [ 65.400030] RIP: 0010:[<ffffffffa06c68ba>] [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
> [ 65.400030] RSP: 0018:ffff88006eec1e68 EFLAGS: 00010206
> [ 65.400030] RAX: ffffffffa06c99f1 RBX: ffffffffa06c99e9 RCX: ffff88007c4159a0
The instruction sequence decodes to
1e: be 24 00 00 00 mov $0x24,%esi
23: 48 89 df mov %rbx,%rdi
26: e8 5b 39 c0 e0 callq 0xffffffffe0c03986
2b:* c6 40 ff 00 movb $0x0,-0x1(%rax) <-- trapping instruction
which seems to be this
p = strchr(rev, '$');
*--p = 0;
code. And yes, it's total crap, because while "p" and "rev" are "char
*", the string that is passed in is actually of type "const char *",
so that function is seriously broken. It's also seriously broken to
not test that "p" is non-NULL - the function would just break if there
is a colon in the string but not a '$'.
And hysdn_procconf_init() passes in a constant string to the thing:
static char *hysdn_procconf_revision = "$Revision: 1.8.6.4 $";
What happens is that it breaks when we mark the constant section as
read-only, because you have CONFIG_DEBUG_RODATA enabled.
So the fix seems to be to
- fix the prototype for hysdn_getrev() to not have "const".
- fix hysdn_procconf_init() to not pass in a constant string to it
The minimal patch would appear to be something like the appended. UNTESTED!
Btw, all of this code seems to go back to before the git history even
started, so it doesn't seem to be new. I assume you haven't tried
booting these all-module kernels before? Or is it just the
DEBUG_RODATA thing that is new for you?
Linus
[-- Attachment #2: patch.diff --]
[-- Type: text/x-patch, Size: 1685 bytes --]
drivers/isdn/hysdn/hysdn_defs.h | 2 +-
drivers/isdn/hysdn/hysdn_init.c | 2 +-
drivers/isdn/hysdn/hysdn_procconf.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/isdn/hysdn/hysdn_defs.h b/drivers/isdn/hysdn/hysdn_defs.h
index 729df40..d21b4a0 100644
--- a/drivers/isdn/hysdn/hysdn_defs.h
+++ b/drivers/isdn/hysdn/hysdn_defs.h
@@ -227,7 +227,7 @@ extern hysdn_card *card_root; /* pointer to first card */
/*************************/
/* im/exported functions */
/*************************/
-extern char *hysdn_getrev(const char *);
+extern char *hysdn_getrev(char *);
/* hysdn_procconf.c */
extern int hysdn_procconf_init(void); /* init proc config filesys */
diff --git a/drivers/isdn/hysdn/hysdn_init.c b/drivers/isdn/hysdn/hysdn_init.c
index b7cc5c2..4ba2123 100644
--- a/drivers/isdn/hysdn/hysdn_init.c
+++ b/drivers/isdn/hysdn/hysdn_init.c
@@ -53,7 +53,7 @@ static hysdn_card *card_last = NULL; /* pointer to first card */
/* extract revision number from string for log output */
/******************************************************/
char *
-hysdn_getrev(const char *revision)
+hysdn_getrev(char *revision)
{
char *rev;
char *p;
diff --git a/drivers/isdn/hysdn/hysdn_procconf.c b/drivers/isdn/hysdn/hysdn_procconf.c
index 96b3e39..1c396e1 100644
--- a/drivers/isdn/hysdn/hysdn_procconf.c
+++ b/drivers/isdn/hysdn/hysdn_procconf.c
@@ -23,7 +23,7 @@
#include "hysdn_defs.h"
static DEFINE_MUTEX(hysdn_conf_mutex);
-static char *hysdn_procconf_revision = "$Revision: 1.8.6.4 $";
+static char hysdn_procconf_revision[] = "$Revision: 1.8.6.4 $";
#define INFO_OUT_LEN 80 /* length of info line including lf */
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Linux 2.6.38-rc4 (hysdn: BUG)
2011-02-09 19:44 ` Linus Torvalds
@ 2011-02-09 21:25 ` Randy Dunlap
2011-02-09 21:57 ` David Miller
0 siblings, 1 reply; 5+ messages in thread
From: Randy Dunlap @ 2011-02-09 21:25 UTC (permalink / raw)
To: Linus Torvalds; +Cc: netdev, Linux Kernel Mailing List, Karsten Keil
On Wed, 9 Feb 2011 11:44:00 -0800 Linus Torvalds wrote:
> On Wed, Feb 9, 2011 at 9:24 AM, Randy Dunlap <randy.dunlap@oracle.com> wrote:
> >
> > on x86_64. no HYSDN hardware found (correct).
> > Nearly allmodconfig.
> >
> >
> > [ 65.397577] HYSDN: module Rev: 1.6.6.6 loaded
> > [ 65.397584] HYSDN: network interface Rev: 1.8.6.4
> > [ 65.398057] HYSDN: 0 card(s) found.
> > [ 65.398121] BUG: unable to handle kernel paging request at ffffffffa06c99f0
> > [ 65.398269] IP: [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
> > [ 65.398379] PGD 1a14067 PUD 1a18063 PMD 6f6c1067 PTE 800000006ce8c161
> > [ 65.398613] Oops: 0003 [#1] SMP DEBUG_PAGEALLOC
> > [ 65.400030]
> > [ 65.400030] Pid: 2497, comm: modprobe Not tainted 2.6.38-rc4 #1 0TY565/OptiPlex 745
> > [ 65.400030] RIP: 0010:[<ffffffffa06c68ba>] [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
> > [ 65.400030] RSP: 0018:ffff88006eec1e68 EFLAGS: 00010206
> > [ 65.400030] RAX: ffffffffa06c99f1 RBX: ffffffffa06c99e9 RCX: ffff88007c4159a0
>
> The instruction sequence decodes to
>
> 1e: be 24 00 00 00 mov $0x24,%esi
> 23: 48 89 df mov %rbx,%rdi
> 26: e8 5b 39 c0 e0 callq 0xffffffffe0c03986
> 2b:* c6 40 ff 00 movb $0x0,-0x1(%rax) <-- trapping instruction
>
> which seems to be this
>
> p = strchr(rev, '$');
> *--p = 0;
>
> code. And yes, it's total crap, because while "p" and "rev" are "char
> *", the string that is passed in is actually of type "const char *",
> so that function is seriously broken. It's also seriously broken to
> not test that "p" is non-NULL - the function would just break if there
> is a colon in the string but not a '$'.
>
> And hysdn_procconf_init() passes in a constant string to the thing:
>
> static char *hysdn_procconf_revision = "$Revision: 1.8.6.4 $";
>
> What happens is that it breaks when we mark the constant section as
> read-only, because you have CONFIG_DEBUG_RODATA enabled.
>
> So the fix seems to be to
> - fix the prototype for hysdn_getrev() to not have "const".
> - fix hysdn_procconf_init() to not pass in a constant string to it
>
> The minimal patch would appear to be something like the appended. UNTESTED!
for your patch:
Tested-and-acked-by: Randy Dunlap <randy.dunlap@oracle.com>
> Btw, all of this code seems to go back to before the git history even
> started, so it doesn't seem to be new. I assume you haven't tried
> booting these all-module kernels before? Or is it just the
> DEBUG_RODATA thing that is new for you?
Neither is new. I tested and reported many-modules on 2.6.37-rc1 and
reported these 2 bugs:
https://bugzilla.kernel.org/show_bug.cgi?id=22912
https://bugzilla.kernel.org/show_bug.cgi?id=22882
and that was with CONFIG_DEBUG_RODATA=y.
I don't know how hysdn was missed at that time.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Linux 2.6.38-rc4 (hysdn: BUG)
2011-02-09 21:25 ` Randy Dunlap
@ 2011-02-09 21:57 ` David Miller
2011-02-09 22:00 ` Linus Torvalds
0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2011-02-09 21:57 UTC (permalink / raw)
To: randy.dunlap; +Cc: torvalds, netdev, linux-kernel, isdn
From: Randy Dunlap <randy.dunlap@oracle.com>
Date: Wed, 9 Feb 2011 13:25:29 -0800
> On Wed, 9 Feb 2011 11:44:00 -0800 Linus Torvalds wrote:
>
>> On Wed, Feb 9, 2011 at 9:24 AM, Randy Dunlap <randy.dunlap@oracle.com> wrote:
>> >
>> > on x86_64. no HYSDN hardware found (correct).
>> > Nearly allmodconfig.
>> >
>> >
>> > [ 65.397577] HYSDN: module Rev: 1.6.6.6 loaded
>> > [ 65.397584] HYSDN: network interface Rev: 1.8.6.4
>> > [ 65.398057] HYSDN: 0 card(s) found.
>> > [ 65.398121] BUG: unable to handle kernel paging request at ffffffffa06c99f0
>> > [ 65.398269] IP: [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
>> > [ 65.398379] PGD 1a14067 PUD 1a18063 PMD 6f6c1067 PTE 800000006ce8c161
>> > [ 65.398613] Oops: 0003 [#1] SMP DEBUG_PAGEALLOC
>> > [ 65.400030]
>> > [ 65.400030] Pid: 2497, comm: modprobe Not tainted 2.6.38-rc4 #1 0TY565/OptiPlex 745
>> > [ 65.400030] RIP: 0010:[<ffffffffa06c68ba>] [<ffffffffa06c68ba>] hysdn_getrev+0x2e/0x50 [hysdn]
>> > [ 65.400030] RSP: 0018:ffff88006eec1e68 EFLAGS: 00010206
>> > [ 65.400030] RAX: ffffffffa06c99f1 RBX: ffffffffa06c99e9 RCX: ffff88007c4159a0
>>
>> The instruction sequence decodes to
>>
>> 1e: be 24 00 00 00 mov $0x24,%esi
>> 23: 48 89 df mov %rbx,%rdi
>> 26: e8 5b 39 c0 e0 callq 0xffffffffe0c03986
>> 2b:* c6 40 ff 00 movb $0x0,-0x1(%rax) <-- trapping instruction
>>
>> which seems to be this
>>
>> p = strchr(rev, '$');
>> *--p = 0;
>>
>> code. And yes, it's total crap, because while "p" and "rev" are "char
>> *", the string that is passed in is actually of type "const char *",
>> so that function is seriously broken. It's also seriously broken to
>> not test that "p" is non-NULL - the function would just break if there
>> is a colon in the string but not a '$'.
>>
>> And hysdn_procconf_init() passes in a constant string to the thing:
>>
>> static char *hysdn_procconf_revision = "$Revision: 1.8.6.4 $";
>>
>> What happens is that it breaks when we mark the constant section as
>> read-only, because you have CONFIG_DEBUG_RODATA enabled.
>>
>> So the fix seems to be to
>> - fix the prototype for hysdn_getrev() to not have "const".
>> - fix hysdn_procconf_init() to not pass in a constant string to it
>>
>> The minimal patch would appear to be something like the appended. UNTESTED!
>
> for your patch:
>
> Tested-and-acked-by: Randy Dunlap <randy.dunlap@oracle.com>
This stuff just prints out a CVS revision string that hasn't changed
in 10 years into the kernel log.
I propose we just kill this stuff off completely.
I note that there is code in other places of this driver that copy
the read-only revision string into a local string buffer then pass
it into the hysdn_getrev() function, it just doesn't happen in this
one spot.
Anyways, I think I'll fix this like so:
--------------------
isdn: hysdn: Kill (partially buggy) CVS regision log reporting.
Some cases try to modify const strings, and in any event the
CVS revision strings have not changed in over ten years making
these printouts completely worthless.
Just kill all of this stuff off.
Reported-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/isdn/hysdn/hysdn_defs.h | 2 --
drivers/isdn/hysdn/hysdn_init.c | 26 +-------------------------
drivers/isdn/hysdn/hysdn_net.c | 3 ---
drivers/isdn/hysdn/hysdn_procconf.c | 3 +--
4 files changed, 2 insertions(+), 32 deletions(-)
diff --git a/drivers/isdn/hysdn/hysdn_defs.h b/drivers/isdn/hysdn/hysdn_defs.h
index 729df40..18b801a 100644
--- a/drivers/isdn/hysdn/hysdn_defs.h
+++ b/drivers/isdn/hysdn/hysdn_defs.h
@@ -227,7 +227,6 @@ extern hysdn_card *card_root; /* pointer to first card */
/*************************/
/* im/exported functions */
/*************************/
-extern char *hysdn_getrev(const char *);
/* hysdn_procconf.c */
extern int hysdn_procconf_init(void); /* init proc config filesys */
@@ -259,7 +258,6 @@ extern int hysdn_tx_cfgline(hysdn_card *, unsigned char *,
/* hysdn_net.c */
extern unsigned int hynet_enable;
-extern char *hysdn_net_revision;
extern int hysdn_net_create(hysdn_card *); /* create a new net device */
extern int hysdn_net_release(hysdn_card *); /* delete the device */
extern char *hysdn_net_getname(hysdn_card *); /* get name of net interface */
diff --git a/drivers/isdn/hysdn/hysdn_init.c b/drivers/isdn/hysdn/hysdn_init.c
index b7cc5c2..0ab42ac 100644
--- a/drivers/isdn/hysdn/hysdn_init.c
+++ b/drivers/isdn/hysdn/hysdn_init.c
@@ -36,7 +36,6 @@ MODULE_DESCRIPTION("ISDN4Linux: Driver for HYSDN cards");
MODULE_AUTHOR("Werner Cornelius");
MODULE_LICENSE("GPL");
-static char *hysdn_init_revision = "$Revision: 1.6.6.6 $";
static int cardmax; /* number of found cards */
hysdn_card *card_root = NULL; /* pointer to first card */
static hysdn_card *card_last = NULL; /* pointer to first card */
@@ -49,25 +48,6 @@ static hysdn_card *card_last = NULL; /* pointer to first card */
/* Additionally newer versions may be activated without rebooting. */
/****************************************************************************/
-/******************************************************/
-/* extract revision number from string for log output */
-/******************************************************/
-char *
-hysdn_getrev(const char *revision)
-{
- char *rev;
- char *p;
-
- if ((p = strchr(revision, ':'))) {
- rev = p + 2;
- p = strchr(rev, '$');
- *--p = 0;
- } else
- rev = "???";
- return rev;
-}
-
-
/****************************************************************************/
/* init_module is called once when the module is loaded to do all necessary */
/* things like autodetect... */
@@ -175,13 +155,9 @@ static int hysdn_have_procfs;
static int __init
hysdn_init(void)
{
- char tmp[50];
int rc;
- strcpy(tmp, hysdn_init_revision);
- printk(KERN_NOTICE "HYSDN: module Rev: %s loaded\n", hysdn_getrev(tmp));
- strcpy(tmp, hysdn_net_revision);
- printk(KERN_NOTICE "HYSDN: network interface Rev: %s \n", hysdn_getrev(tmp));
+ printk(KERN_NOTICE "HYSDN: module loaded\n");
rc = pci_register_driver(&hysdn_pci_driver);
if (rc)
diff --git a/drivers/isdn/hysdn/hysdn_net.c b/drivers/isdn/hysdn/hysdn_net.c
index feec8d8..11f2cce 100644
--- a/drivers/isdn/hysdn/hysdn_net.c
+++ b/drivers/isdn/hysdn/hysdn_net.c
@@ -26,9 +26,6 @@
unsigned int hynet_enable = 0xffffffff;
module_param(hynet_enable, uint, 0);
-/* store the actual version for log reporting */
-char *hysdn_net_revision = "$Revision: 1.8.6.4 $";
-
#define MAX_SKB_BUFFERS 20 /* number of buffers for keeping TX-data */
/****************************************************************************/
diff --git a/drivers/isdn/hysdn/hysdn_procconf.c b/drivers/isdn/hysdn/hysdn_procconf.c
index 96b3e39..5fe83bd 100644
--- a/drivers/isdn/hysdn/hysdn_procconf.c
+++ b/drivers/isdn/hysdn/hysdn_procconf.c
@@ -23,7 +23,6 @@
#include "hysdn_defs.h"
static DEFINE_MUTEX(hysdn_conf_mutex);
-static char *hysdn_procconf_revision = "$Revision: 1.8.6.4 $";
#define INFO_OUT_LEN 80 /* length of info line including lf */
@@ -404,7 +403,7 @@ hysdn_procconf_init(void)
card = card->next; /* next entry */
}
- printk(KERN_NOTICE "HYSDN: procfs Rev. %s initialised\n", hysdn_getrev(hysdn_procconf_revision));
+ printk(KERN_NOTICE "HYSDN: procfs initialised\n");
return (0);
} /* hysdn_procconf_init */
--
1.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Linux 2.6.38-rc4 (hysdn: BUG)
2011-02-09 21:57 ` David Miller
@ 2011-02-09 22:00 ` Linus Torvalds
0 siblings, 0 replies; 5+ messages in thread
From: Linus Torvalds @ 2011-02-09 22:00 UTC (permalink / raw)
To: David Miller; +Cc: randy.dunlap, netdev, linux-kernel, isdn
On Wed, Feb 9, 2011 at 1:57 PM, David Miller <davem@davemloft.net> wrote:
>
> I propose we just kill this stuff off completely.
>
> I note that there is code in other places of this driver that copy
> the read-only revision string into a local string buffer then pass
> it into the hysdn_getrev() function, it just doesn't happen in this
> one spot.
>
> Anyways, I think I'll fix this like so:
Ack from me. Removing terminally buggy and pointless code is certainly
better than trying to fix it up. No amount of lipstick will make that
pig look good.
Linus
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-02-09 22:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <AANLkTimmb26UiBSukdNnVdxLJpCGd=QqpCw8vQoHALh-@mail.gmail.com>
2011-02-09 17:24 ` Linux 2.6.38-rc4 (hysdn: BUG) Randy Dunlap
2011-02-09 19:44 ` Linus Torvalds
2011-02-09 21:25 ` Randy Dunlap
2011-02-09 21:57 ` David Miller
2011-02-09 22:00 ` Linus Torvalds
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).