ash: fix "duplicate local" code (forgot to re-enable interrupts)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
834aba3b72
commit
06b114900f
23
shell/ash.c
23
shell/ash.c
@ -32,6 +32,7 @@
|
|||||||
#define DEBUG_TIME 0
|
#define DEBUG_TIME 0
|
||||||
#define DEBUG_PID 1
|
#define DEBUG_PID 1
|
||||||
#define DEBUG_SIG 1
|
#define DEBUG_SIG 1
|
||||||
|
#define DEBUG_INTONOFF 0
|
||||||
|
|
||||||
#define PROFILE 0
|
#define PROFILE 0
|
||||||
|
|
||||||
@ -442,10 +443,18 @@ static void exitshell(void) NORETURN;
|
|||||||
* much more efficient and portable. (But hacking the kernel is so much
|
* much more efficient and portable. (But hacking the kernel is so much
|
||||||
* more fun than worrying about efficiency and portability. :-))
|
* more fun than worrying about efficiency and portability. :-))
|
||||||
*/
|
*/
|
||||||
#define INT_OFF do { \
|
#if DEBUG_INTONOFF
|
||||||
|
# define INT_OFF do { \
|
||||||
|
TRACE(("%s:%d INT_OFF(%d)\n", __func__, __LINE__, suppress_int)); \
|
||||||
suppress_int++; \
|
suppress_int++; \
|
||||||
barrier(); \
|
barrier(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
#else
|
||||||
|
# define INT_OFF do { \
|
||||||
|
suppress_int++; \
|
||||||
|
barrier(); \
|
||||||
|
} while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called to raise an exception. Since C doesn't include exceptions, we
|
* Called to raise an exception. Since C doesn't include exceptions, we
|
||||||
@ -513,7 +522,14 @@ int_on(void)
|
|||||||
raise_interrupt();
|
raise_interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#define INT_ON int_on()
|
#if DEBUG_INTONOFF
|
||||||
|
# define INT_ON do { \
|
||||||
|
TRACE(("%s:%d INT_ON(%d)\n", __func__, __LINE__, suppress_int-1)); \
|
||||||
|
int_on(); \
|
||||||
|
} while (0)
|
||||||
|
#else
|
||||||
|
# define INT_ON int_on()
|
||||||
|
#endif
|
||||||
static IF_ASH_OPTIMIZE_FOR_SIZE(inline) void
|
static IF_ASH_OPTIMIZE_FOR_SIZE(inline) void
|
||||||
force_int_on(void)
|
force_int_on(void)
|
||||||
{
|
{
|
||||||
@ -9101,7 +9117,7 @@ mklocal(char *name)
|
|||||||
/* else:
|
/* else:
|
||||||
* it's a duplicate "local VAR" declaration, do nothing
|
* it's a duplicate "local VAR" declaration, do nothing
|
||||||
*/
|
*/
|
||||||
return;
|
goto ret;
|
||||||
}
|
}
|
||||||
lvp = lvp->next;
|
lvp = lvp->next;
|
||||||
}
|
}
|
||||||
@ -9140,6 +9156,7 @@ mklocal(char *name)
|
|||||||
lvp->vp = vp;
|
lvp->vp = vp;
|
||||||
lvp->next = localvars;
|
lvp->next = localvars;
|
||||||
localvars = lvp;
|
localvars = lvp;
|
||||||
|
ret:
|
||||||
INT_ON;
|
INT_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user