aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/msg.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/msg.c')
-rw-r--r--ipc/msg.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/ipc/msg.c b/ipc/msg.c
index 0e7ccfc0700b..06be5a9adfa4 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -1155,7 +1155,7 @@ COMPAT_SYSCALL_DEFINE5(msgrcv, int, msqid, compat_uptr_t, msgp,
1155} 1155}
1156#endif 1156#endif
1157 1157
1158void msg_init_ns(struct ipc_namespace *ns) 1158int msg_init_ns(struct ipc_namespace *ns)
1159{ 1159{
1160 ns->msg_ctlmax = MSGMAX; 1160 ns->msg_ctlmax = MSGMAX;
1161 ns->msg_ctlmnb = MSGMNB; 1161 ns->msg_ctlmnb = MSGMNB;
@@ -1163,7 +1163,7 @@ void msg_init_ns(struct ipc_namespace *ns)
1163 1163
1164 atomic_set(&ns->msg_bytes, 0); 1164 atomic_set(&ns->msg_bytes, 0);
1165 atomic_set(&ns->msg_hdrs, 0); 1165 atomic_set(&ns->msg_hdrs, 0);
1166 ipc_init_ids(&ns->ids[IPC_MSG_IDS]); 1166 return ipc_init_ids(&ns->ids[IPC_MSG_IDS]);
1167} 1167}
1168 1168
1169#ifdef CONFIG_IPC_NS 1169#ifdef CONFIG_IPC_NS
@@ -1171,6 +1171,7 @@ void msg_exit_ns(struct ipc_namespace *ns)
1171{ 1171{
1172 free_ipcs(ns, &msg_ids(ns), freeque); 1172 free_ipcs(ns, &msg_ids(ns), freeque);
1173 idr_destroy(&ns->ids[IPC_MSG_IDS].ipcs_idr); 1173 idr_destroy(&ns->ids[IPC_MSG_IDS].ipcs_idr);
1174 rhashtable_destroy(&ns->ids[IPC_MSG_IDS].key_ht);
1174} 1175}
1175#endif 1176#endif
1176 1177
@@ -1178,7 +1179,8 @@ void msg_exit_ns(struct ipc_namespace *ns)
1178static int sysvipc_msg_proc_show(struct seq_file *s, void *it) 1179static int sysvipc_msg_proc_show(struct seq_file *s, void *it)
1179{ 1180{
1180 struct user_namespace *user_ns = seq_user_ns(s); 1181 struct user_namespace *user_ns = seq_user_ns(s);
1181 struct msg_queue *msq = it; 1182 struct kern_ipc_perm *ipcp = it;
1183 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm);
1182 1184
1183 seq_printf(s, 1185 seq_printf(s,
1184 "%10d %10d %4o %10lu %10lu %5u %5u %5u %5u %5u %5u %10llu %10llu %10llu\n", 1186 "%10d %10d %4o %10lu %10lu %5u %5u %5u %5u %5u %5u %10llu %10llu %10llu\n",
@@ -1201,11 +1203,12 @@ static int sysvipc_msg_proc_show(struct seq_file *s, void *it)
1201} 1203}
1202#endif 1204#endif
1203 1205
1204void __init msg_init(void) 1206int __init msg_init(void)
1205{ 1207{
1206 msg_init_ns(&init_ipc_ns); 1208 const int err = msg_init_ns(&init_ipc_ns);
1207 1209
1208 ipc_init_proc_interface("sysvipc/msg", 1210 ipc_init_proc_interface("sysvipc/msg",
1209 " key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime\n", 1211 " key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime\n",
1210 IPC_MSG_IDS, sysvipc_msg_proc_show); 1212 IPC_MSG_IDS, sysvipc_msg_proc_show);
1213 return err;
1211} 1214}