diff options
Diffstat (limited to 'ipc/msg.c')
-rw-r--r-- | ipc/msg.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -1155,7 +1155,7 @@ COMPAT_SYSCALL_DEFINE5(msgrcv, int, msqid, compat_uptr_t, msgp, | |||
1155 | } | 1155 | } |
1156 | #endif | 1156 | #endif |
1157 | 1157 | ||
1158 | void msg_init_ns(struct ipc_namespace *ns) | 1158 | int 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) | |||
1178 | static int sysvipc_msg_proc_show(struct seq_file *s, void *it) | 1179 | static 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 | ||
1204 | void __init msg_init(void) | 1206 | int __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 | } |