| Anonymous | Login | Signup for a new account | 11-10-2008 13:43 PST |
| Main | My View | View Issues | Change Log | Docs |
| Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | |||||||||||
| ID | Category | Severity | Reproducibility | Date Submitted | Last Update | |||||||
| 0005634 | [BusyBox] Kernel Module Support | minor | always | 10-22-08 00:46 | 10-22-08 04:59 | |||||||
| Reporter | zaphod | View Status | public | |||||||||
| Assigned To | uClibc | |||||||||||
| Priority | normal | Resolution | open | |||||||||
| Status | assigned | Product Version | svn | |||||||||
| Summary | 0005634: rmmod hangs when trying to remove a busy kernel module using delete_module() from µClibc | |||||||||||
| Description |
Busybox uses delete_module() to remove a kernel module. It assumes delete_module() to be a function with the following prototype: int delete_module(const char *module, unsigned int flags); Unfortunatly µClibc provides delete_module() as follows: int delete_module(const char *name); The flags containing O_NONBLOCK gets lost on the way to the kernel and rmmod hangs. To fix this simply fall back to busybox own implementation, which is used in all cases except for µClibc: #ifdef __UCLIBC__ extern int delete_module(const char *module, unsigned int flags); #else # include <sys/syscall.h> # define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags) #endif |
|||||||||||
| Additional Information | in all linux-2.4.x delete_module was a syscall1 (as opposed to later kernels). I'll take a look. | |||||||||||
| Attached Files | ||||||||||||
|
|
||||||||||||
| Copyright © 2000 - 2006 Mantis Group |