modprobe: revert checking for /, stop doing basename() on modprobe args
function old new delta process_module 726 719 -7 filename2modname 81 67 -14 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-21) Total: -21 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
6c19d35f68
commit
78854520eb
@ -149,9 +149,13 @@ static void replace(char *s, char what, char with)
|
|||||||
static char *filename2modname(const char *filename, char *modname)
|
static char *filename2modname(const char *filename, char *modname)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *from;
|
const char *from;
|
||||||
|
|
||||||
from = bb_get_last_path_component_nostrip(filename);
|
// Disabled since otherwise "modprobe dir/name" would work
|
||||||
|
// as if it is "modprobe name". It is unclear why
|
||||||
|
// 'basenamization' was here in the first place.
|
||||||
|
//from = bb_get_last_path_component_nostrip(filename);
|
||||||
|
from = filename;
|
||||||
for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++)
|
for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++)
|
||||||
modname[i] = (from[i] == '-') ? '_' : from[i];
|
modname[i] = (from[i] == '-') ? '_' : from[i];
|
||||||
modname[i] = '\0';
|
modname[i] = '\0';
|
||||||
|
@ -238,17 +238,6 @@ static void add_probe(const char *name)
|
|||||||
{
|
{
|
||||||
struct module_entry *m;
|
struct module_entry *m;
|
||||||
|
|
||||||
/*
|
|
||||||
* get_or_add_modentry() strips path from name and works
|
|
||||||
* on remaining basename.
|
|
||||||
* This would make "rmmod dir/name" and "modprobe dir/name"
|
|
||||||
* to work like "rmmod name" and "modprobe name",
|
|
||||||
* which is wrong, and can be abused via implicit modprobing:
|
|
||||||
* "ifconfig /usbserial up" tries to modprobe netdev-/usbserial.
|
|
||||||
*/
|
|
||||||
if (strchr(name, '/'))
|
|
||||||
bb_error_msg_and_die("malformed module name '%s'", name);
|
|
||||||
|
|
||||||
m = get_or_add_modentry(name);
|
m = get_or_add_modentry(name);
|
||||||
if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS))
|
if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS))
|
||||||
&& (m->flags & MODULE_FLAG_LOADED)
|
&& (m->flags & MODULE_FLAG_LOADED)
|
||||||
|
@ -48,13 +48,17 @@ int FAST_FUNC string_to_llist(char *string, llist_t **llist, const char *delim)
|
|||||||
char* FAST_FUNC filename2modname(const char *filename, char *modname)
|
char* FAST_FUNC filename2modname(const char *filename, char *modname)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *from;
|
const char *from;
|
||||||
|
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (modname == NULL)
|
if (modname == NULL)
|
||||||
modname = xmalloc(MODULE_NAME_LEN);
|
modname = xmalloc(MODULE_NAME_LEN);
|
||||||
from = bb_get_last_path_component_nostrip(filename);
|
// Disabled since otherwise "modprobe dir/name" would work
|
||||||
|
// as if it is "modprobe name". It is unclear why
|
||||||
|
// 'basenamization' was here in the first place.
|
||||||
|
//from = bb_get_last_path_component_nostrip(filename);
|
||||||
|
from = filename;
|
||||||
for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++)
|
for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++)
|
||||||
modname[i] = (from[i] == '-') ? '_' : from[i];
|
modname[i] = (from[i] == '-') ? '_' : from[i];
|
||||||
modname[i] = '\0';
|
modname[i] = '\0';
|
||||||
|
Loading…
Reference in New Issue
Block a user