diff options
Diffstat (limited to 'ipc/msg.c')
-rw-r--r-- | ipc/msg.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ipc/msg.c b/ipc/msg.c index 74e672035675..9f545826bcf5 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -138,13 +138,17 @@ void __init msg_init(void) static inline struct msg_queue *msg_lock(struct ipc_namespace *ns, int id) { - return (struct msg_queue *) ipc_lock(&msg_ids(ns), id); + struct kern_ipc_perm *ipcp = ipc_lock(&msg_ids(ns), id); + + return container_of(ipcp, struct msg_queue, q_perm); } static inline struct msg_queue *msg_lock_check(struct ipc_namespace *ns, int id) { - return (struct msg_queue *) ipc_lock_check(&msg_ids(ns), id); + struct kern_ipc_perm *ipcp = ipc_lock_check(&msg_ids(ns), id); + + return container_of(ipcp, struct msg_queue, q_perm); } static inline void msg_rmid(struct ipc_namespace *ns, struct msg_queue *s) @@ -274,9 +278,11 @@ static void freeque(struct ipc_namespace *ns, struct msg_queue *msq) ipc_rcu_putref(msq); } -static inline int msg_security(void *msq, int msgflg) +static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg) { - return security_msg_queue_associate((struct msg_queue *) msq, msgflg); + struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm); + + return security_msg_queue_associate(msq, msgflg); } asmlinkage long sys_msgget(key_t key, int msgflg) |