public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Module parameters and __initdata
@ 2011-01-05 22:16 Alan Stern
  2011-01-16 23:19 ` Rusty Russell
  0 siblings, 1 reply; 2+ messages in thread
From: Alan Stern @ 2011-01-05 22:16 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Kernel development list

Is the proper use of "__initdata" with module parameters documented 
anywhere?

I'm running into problems with drivers/usb/gadget/printer.c, which 
includes code such as this:


static ushort __initdata bcdDevice;
module_param(bcdDevice, ushort, S_IRUGO);
MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)");

static char *__initdata iManufacturer;
module_param(iManufacturer, charp, S_IRUGO);
MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string");


In 2.6.37, when the module is unloaded the rmmod process gets an
invalid access trying to free the charp parameter:

[   60.763734] BUG: unable to handle kernel paging request at f0547594
[   60.763960] IP: [<c1036d80>] param_free_charp+0x1/0xc
[   60.764014] *pde = 29e58067 *pte = 00000000 
[   60.764014] Oops: 0000 [#1] PREEMPT SMP 
[   60.764014] last sysfs file: /sys/devices/platform/dummy_hcd/usb9/9-1/9-1:1.0/ieee1284_id
[   60.764014] Modules linked in: usblp dummy_hcd i915 drm_kms_helper drm fb fbdev i2c_algo_bit cfbcopyarea i2c_core video backlight output cfbimgblt cfbfillrect pcspkr e100 ohci_hcd ehci_hcd mii uhci_hcd evdev processor fan button thermal_sys usbcore [last unloaded: g_printer]
[   60.764014] 
[   60.764014] Pid: 1707, comm: rmmod Not tainted 2.6.37 #1 08FCh/HP dx2000 MT (EE004AA)
[   60.764014] EIP: 0060:[<c1036d80>] EFLAGS: 00010282 CPU: 0
[   60.764014] EIP is at param_free_charp+0x1/0xc
[   60.764014] EAX: f0547594 EBX: f0542f1c ECX: c1036d7f EDX: 00000008
[   60.764014] ESI: 00000001 EDI: 00000008 EBP: ed9c5f30 ESP: ed9c5f1c
[   60.764014]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[   60.764014] Process rmmod (pid: 1707, ti=ed9c4000 task=ed82d8c0 task.ti=ed9c4000)
[   60.764014] Stack:
[   60.764014]  ed9c5f30 c1037581 f0543560 edba0640 00000050 ed9c5f48 c104c5b9 f05435a8
[   60.764014]  f0543560 00000880 00000000 ed9c5fac c104cfaf 72705f67 65746e69 00000072
[   60.764014]  ed9c5f6c c10747f2 ed538000 00000246 ed9c5f74 00000046 ed9c5f90 00000246
[   60.764014] Call Trace:
[   60.764014]  [<c1037581>] ? destroy_params+0x1d/0x2c
[   60.764014]  [<c104c5b9>] ? free_module+0x131/0x178
[   60.764014]  [<c104cfaf>] ? sys_delete_module+0x1a6/0x1c1
[   60.764014]  [<c10747f2>] ? remove_vma+0x52/0x58
[   60.764014]  [<c11e06a0>] ? restore_all_notrace+0x0/0x18
[   60.764014]  [<c1002850>] ? sysenter_do_call+0x12/0x36
[   60.764014] Code: 8d 4b 08 39 c8 75 10 89 d8 e8 55 89 0c 00 89 d8 e8 01 90 04 00 eb 10 89 d3 8b 13 0f 18 02 90 81 fb 7c c3 2f c1 75 d9 5b 5d c3 55 <8b> 00 89 e5 e8 c0 ff ff ff 5d c3 55 89 e5 57 89 d7 56 53 8b 72 
[   60.764014] EIP: [<c1036d80>] param_free_charp+0x1/0xc SS:ESP 0068:ed9c5f1c
[   60.764014] CR2: 00000000f0547594
[   60.764014] ---[ end trace 1c4f6a8c3969118f ]---

What's going on?  Is the kernel trying to free data that was released
when the module finished initializing?

Thanks for any help.

Alan Stern


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Module parameters and __initdata
  2011-01-05 22:16 Module parameters and __initdata Alan Stern
@ 2011-01-16 23:19 ` Rusty Russell
  0 siblings, 0 replies; 2+ messages in thread
From: Rusty Russell @ 2011-01-16 23:19 UTC (permalink / raw)
  To: Alan Stern; +Cc: Kernel development list

On Thu, 6 Jan 2011 08:46:59 am Alan Stern wrote:
> Is the proper use of "__initdata" with module parameters documented 
> anywhere?
> 
> I'm running into problems with drivers/usb/gadget/printer.c, which 
> includes code such as this:
> 
> 
> static ushort __initdata bcdDevice;
> module_param(bcdDevice, ushort, S_IRUGO);
> MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)");

You need to make perm 0.  You can't read it if it's freed after init!

Rusty.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-01-16 23:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-05 22:16 Module parameters and __initdata Alan Stern
2011-01-16 23:19 ` Rusty Russell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox