mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
tty/sysrq: constify the sysrq API
The user is not supposed to thinker with the underlying sysrq_key_op. Make that explicit by adding a handful of const notations. Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Jiri Slaby <jslaby@suse.com> Cc: linux-kernel@vger.kernel.org Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://lore.kernel.org/r/20200513214351.2138580-2-emil.l.velikov@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0f1c9688a1
commit
23cbedf812
@ -231,13 +231,13 @@ prints help, and C) an action_msg string, that will print right before your
|
||||
handler is called. Your handler must conform to the prototype in 'sysrq.h'.
|
||||
|
||||
After the ``sysrq_key_op`` is created, you can call the kernel function
|
||||
``register_sysrq_key(int key, struct sysrq_key_op *op_p);`` this will
|
||||
``register_sysrq_key(int key, const struct sysrq_key_op *op_p);`` this will
|
||||
register the operation pointed to by ``op_p`` at table key 'key',
|
||||
if that slot in the table is blank. At module unload time, you must call
|
||||
the function ``unregister_sysrq_key(int key, struct sysrq_key_op *op_p)``, which
|
||||
will remove the key op pointed to by 'op_p' from the key 'key', if and only if
|
||||
it is currently registered in that slot. This is in case the slot has been
|
||||
overwritten since you registered it.
|
||||
the function ``unregister_sysrq_key(int key, const struct sysrq_key_op *op_p)``,
|
||||
which will remove the key op pointed to by 'op_p' from the key 'key', if and
|
||||
only if it is currently registered in that slot. This is in case the slot has
|
||||
been overwritten since you registered it.
|
||||
|
||||
The Magic SysRQ system works by registering key operations against a key op
|
||||
lookup table, which is defined in 'drivers/tty/sysrq.c'. This key table has
|
||||
|
@ -518,9 +518,9 @@ static int sysrq_key_table_key2index(int key)
|
||||
/*
|
||||
* get and put functions for the table, exposed to modules.
|
||||
*/
|
||||
static struct sysrq_key_op *__sysrq_get_key_op(int key)
|
||||
static const struct sysrq_key_op *__sysrq_get_key_op(int key)
|
||||
{
|
||||
struct sysrq_key_op *op_p = NULL;
|
||||
const struct sysrq_key_op *op_p = NULL;
|
||||
int i;
|
||||
|
||||
i = sysrq_key_table_key2index(key);
|
||||
@ -530,7 +530,7 @@ static struct sysrq_key_op *__sysrq_get_key_op(int key)
|
||||
return op_p;
|
||||
}
|
||||
|
||||
static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
static void __sysrq_put_key_op(int key, const struct sysrq_key_op *op_p)
|
||||
{
|
||||
int i = sysrq_key_table_key2index(key);
|
||||
|
||||
@ -540,7 +540,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
|
||||
void __handle_sysrq(int key, bool check_mask)
|
||||
{
|
||||
struct sysrq_key_op *op_p;
|
||||
const struct sysrq_key_op *op_p;
|
||||
int orig_log_level;
|
||||
int orig_suppress_printk;
|
||||
int i;
|
||||
@ -1063,8 +1063,8 @@ int sysrq_toggle_support(int enable_mask)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysrq_toggle_support);
|
||||
|
||||
static int __sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p,
|
||||
struct sysrq_key_op *remove_op_p)
|
||||
static int __sysrq_swap_key_ops(int key, const struct sysrq_key_op *insert_op_p,
|
||||
const struct sysrq_key_op *remove_op_p)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@ -1087,13 +1087,13 @@ static int __sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p,
|
||||
return retval;
|
||||
}
|
||||
|
||||
int register_sysrq_key(int key, struct sysrq_key_op *op_p)
|
||||
int register_sysrq_key(int key, const struct sysrq_key_op *op_p)
|
||||
{
|
||||
return __sysrq_swap_key_ops(key, op_p, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(register_sysrq_key);
|
||||
|
||||
int unregister_sysrq_key(int key, struct sysrq_key_op *op_p)
|
||||
int unregister_sysrq_key(int key, const struct sysrq_key_op *op_p)
|
||||
{
|
||||
return __sysrq_swap_key_ops(key, NULL, op_p);
|
||||
}
|
||||
|
@ -30,10 +30,10 @@
|
||||
#define SYSRQ_ENABLE_RTNICE 0x0100
|
||||
|
||||
struct sysrq_key_op {
|
||||
void (*handler)(int);
|
||||
char *help_msg;
|
||||
char *action_msg;
|
||||
int enable_mask;
|
||||
void (* const handler)(int);
|
||||
const char * const help_msg;
|
||||
const char * const action_msg;
|
||||
const int enable_mask;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MAGIC_SYSRQ
|
||||
@ -45,8 +45,8 @@ struct sysrq_key_op {
|
||||
|
||||
void handle_sysrq(int key);
|
||||
void __handle_sysrq(int key, bool check_mask);
|
||||
int register_sysrq_key(int key, struct sysrq_key_op *op);
|
||||
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
|
||||
int register_sysrq_key(int key, const struct sysrq_key_op *op);
|
||||
int unregister_sysrq_key(int key, const struct sysrq_key_op *op);
|
||||
extern struct sysrq_key_op *__sysrq_reboot_op;
|
||||
|
||||
int sysrq_toggle_support(int enable_mask);
|
||||
@ -62,12 +62,12 @@ static inline void __handle_sysrq(int key, bool check_mask)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int register_sysrq_key(int key, struct sysrq_key_op *op)
|
||||
static inline int register_sysrq_key(int key, const struct sysrq_key_op *op)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int unregister_sysrq_key(int key, struct sysrq_key_op *op)
|
||||
static inline int unregister_sysrq_key(int key, const struct sysrq_key_op *op)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user