automount: check for recursive automount
automount_mount calls run_command which may trigger an automount again. This results in an endless loop. A simple way to trigger this is: mkdir /x; automount /x false; cd /x; something Use a static variable to detect if we are currently in automount_mount() and bail out if we are. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
477199c684
commit
621266d3a4
10
fs/fs.c
10
fs/fs.c
|
@ -409,6 +409,12 @@ static void automount_mount(const char *path, int instat)
|
||||||
{
|
{
|
||||||
struct automount *am;
|
struct automount *am;
|
||||||
int ret;
|
int ret;
|
||||||
|
static int in_automount;
|
||||||
|
|
||||||
|
if (in_automount)
|
||||||
|
return;
|
||||||
|
|
||||||
|
in_automount++;
|
||||||
|
|
||||||
list_for_each_entry(am, &automount_list, list) {
|
list_for_each_entry(am, &automount_list, list) {
|
||||||
int len_path = strlen(path);
|
int len_path = strlen(path);
|
||||||
|
@ -444,8 +450,10 @@ static void automount_mount(const char *path, int instat)
|
||||||
else
|
else
|
||||||
automount_remove(am->path);
|
automount_remove(am->path);
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
in_automount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
BAREBOX_MAGICVAR(automount_path, "mountpath passed to automount scripts");
|
BAREBOX_MAGICVAR(automount_path, "mountpath passed to automount scripts");
|
||||||
|
|
Loading…
Reference in New Issue