-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'for_linus-3.19-rc4' of git://git.kernel.org/pub/scm/linux/…
…kernel/git/jwessel/kgdb Pull kgdb/kdb fixes from Jason Wessel: "These have been around since 3.17 and in kgdb-next for the last 9 weeks and some will go back to -stable. Summary of changes: Cleanups - kdb: Remove unused command flags, repeat flags and KDB_REPEAT_NONE Fixes - kgdb/kdb: Allow access on a single core, if a CPU round up is deemed impossible, which will allow inspection of the now "trashed" kernel - kdb: Add enable mask for the command groups - kdb: access controls to restrict sensitive commands" * tag 'for_linus-3.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb: kernel/debug/debug_core.c: Logging clean-up kgdb: timeout if secondary CPUs ignore the roundup kdb: Allow access to sensitive commands to be restricted by default kdb: Add enable mask for groups of commands kdb: Categorize kdb commands (similar to SysRq categorization) kdb: Remove KDB_REPEAT_NONE flag kdb: Use KDB_REPEAT_* values as flags kdb: Rename kdb_register_repeat() to kdb_register_flags() kdb: Rename kdb_repeat_t to kdb_cmdflags_t, cmd_repeat to cmd_flags kdb: Remove currently unused kdbtab_t->cmd_flags
- Loading branch information
Showing
8 changed files
with
306 additions
and
148 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,11 +13,54 @@ | |
* Copyright (C) 2009 Jason Wessel <[email protected]> | ||
*/ | ||
|
||
/* Shifted versions of the command enable bits are be used if the command | ||
* has no arguments (see kdb_check_flags). This allows commands, such as | ||
* go, to have different permissions depending upon whether it is called | ||
* with an argument. | ||
*/ | ||
#define KDB_ENABLE_NO_ARGS_SHIFT 10 | ||
|
||
typedef enum { | ||
KDB_REPEAT_NONE = 0, /* Do not repeat this command */ | ||
KDB_REPEAT_NO_ARGS, /* Repeat the command without arguments */ | ||
KDB_REPEAT_WITH_ARGS, /* Repeat the command including its arguments */ | ||
} kdb_repeat_t; | ||
KDB_ENABLE_ALL = (1 << 0), /* Enable everything */ | ||
KDB_ENABLE_MEM_READ = (1 << 1), | ||
KDB_ENABLE_MEM_WRITE = (1 << 2), | ||
KDB_ENABLE_REG_READ = (1 << 3), | ||
KDB_ENABLE_REG_WRITE = (1 << 4), | ||
KDB_ENABLE_INSPECT = (1 << 5), | ||
KDB_ENABLE_FLOW_CTRL = (1 << 6), | ||
KDB_ENABLE_SIGNAL = (1 << 7), | ||
KDB_ENABLE_REBOOT = (1 << 8), | ||
/* User exposed values stop here, all remaining flags are | ||
* exclusively used to describe a commands behaviour. | ||
*/ | ||
|
||
KDB_ENABLE_ALWAYS_SAFE = (1 << 9), | ||
KDB_ENABLE_MASK = (1 << KDB_ENABLE_NO_ARGS_SHIFT) - 1, | ||
|
||
KDB_ENABLE_ALL_NO_ARGS = KDB_ENABLE_ALL << KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_MEM_READ_NO_ARGS = KDB_ENABLE_MEM_READ | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_MEM_WRITE_NO_ARGS = KDB_ENABLE_MEM_WRITE | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_REG_READ_NO_ARGS = KDB_ENABLE_REG_READ | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_REG_WRITE_NO_ARGS = KDB_ENABLE_REG_WRITE | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_INSPECT_NO_ARGS = KDB_ENABLE_INSPECT | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_FLOW_CTRL_NO_ARGS = KDB_ENABLE_FLOW_CTRL | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_SIGNAL_NO_ARGS = KDB_ENABLE_SIGNAL | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_REBOOT_NO_ARGS = KDB_ENABLE_REBOOT | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_ALWAYS_SAFE_NO_ARGS = KDB_ENABLE_ALWAYS_SAFE | ||
<< KDB_ENABLE_NO_ARGS_SHIFT, | ||
KDB_ENABLE_MASK_NO_ARGS = KDB_ENABLE_MASK << KDB_ENABLE_NO_ARGS_SHIFT, | ||
|
||
KDB_REPEAT_NO_ARGS = 0x40000000, /* Repeat the command w/o arguments */ | ||
KDB_REPEAT_WITH_ARGS = 0x80000000, /* Repeat the command with args */ | ||
} kdb_cmdflags_t; | ||
|
||
typedef int (*kdb_func_t)(int, const char **); | ||
|
||
|
@@ -62,6 +105,7 @@ extern atomic_t kdb_event; | |
#define KDB_BADLENGTH (-19) | ||
#define KDB_NOBP (-20) | ||
#define KDB_BADADDR (-21) | ||
#define KDB_NOPERM (-22) | ||
|
||
/* | ||
* kdb_diemsg | ||
|
@@ -146,17 +190,17 @@ static inline const char *kdb_walk_kallsyms(loff_t *pos) | |
|
||
/* Dynamic kdb shell command registration */ | ||
extern int kdb_register(char *, kdb_func_t, char *, char *, short); | ||
extern int kdb_register_repeat(char *, kdb_func_t, char *, char *, | ||
short, kdb_repeat_t); | ||
extern int kdb_register_flags(char *, kdb_func_t, char *, char *, | ||
short, kdb_cmdflags_t); | ||
extern int kdb_unregister(char *); | ||
#else /* ! CONFIG_KGDB_KDB */ | ||
static inline __printf(1, 2) int kdb_printf(const char *fmt, ...) { return 0; } | ||
static inline void kdb_init(int level) {} | ||
static inline int kdb_register(char *cmd, kdb_func_t func, char *usage, | ||
char *help, short minlen) { return 0; } | ||
static inline int kdb_register_repeat(char *cmd, kdb_func_t func, char *usage, | ||
char *help, short minlen, | ||
kdb_repeat_t repeat) { return 0; } | ||
static inline int kdb_register_flags(char *cmd, kdb_func_t func, char *usage, | ||
char *help, short minlen, | ||
kdb_cmdflags_t flags) { return 0; } | ||
static inline int kdb_unregister(char *cmd) { return 0; } | ||
#endif /* CONFIG_KGDB_KDB */ | ||
enum { | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.