ipc: simplify free_copy() call
Passing and checking of msgflg to free_copy() is redundant. This patch sets copy to NULL on declaration instead and checks for non-NULL in free_copy(). Note: in case of copy allocation failure, error is returned immediately. So no need to check for IS_ERR() in free_copy(). Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: James Morris <jmorris@namei.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
3a665531a3
Коммит
85398aa8de
14
ipc/msg.c
14
ipc/msg.c
|
@ -797,15 +797,17 @@ static inline struct msg_msg *prepare_copy(void __user *buf, size_t bufsz,
|
|||
return copy;
|
||||
}
|
||||
|
||||
static inline void free_copy(int msgflg, struct msg_msg *copy)
|
||||
static inline void free_copy(struct msg_msg *copy)
|
||||
{
|
||||
if (msgflg & MSG_COPY)
|
||||
if (copy)
|
||||
free_msg(copy);
|
||||
}
|
||||
#else
|
||||
#define free_copy(msgflg, copy) do {} while (0)
|
||||
#define prepare_copy(buf, sz, msgflg, msgtyp, copy_nr) ERR_PTR(-ENOSYS)
|
||||
#define fill_copy(copy_nr, msg_nr, msg, copy) NULL
|
||||
static inline void free_copy(struct msg_msg *copy)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
|
||||
|
@ -816,7 +818,7 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
|
|||
struct msg_msg *msg;
|
||||
int mode;
|
||||
struct ipc_namespace *ns;
|
||||
struct msg_msg *copy;
|
||||
struct msg_msg *copy = NULL;
|
||||
unsigned long __maybe_unused copy_number;
|
||||
|
||||
if (msqid < 0 || (long) bufsz < 0)
|
||||
|
@ -831,7 +833,7 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
|
|||
|
||||
msq = msg_lock_check(ns, msqid);
|
||||
if (IS_ERR(msq)) {
|
||||
free_copy(msgflg, copy);
|
||||
free_copy(copy);
|
||||
return PTR_ERR(msq);
|
||||
}
|
||||
|
||||
|
@ -965,7 +967,7 @@ out_unlock:
|
|||
}
|
||||
}
|
||||
if (IS_ERR(msg)) {
|
||||
free_copy(msgflg, copy);
|
||||
free_copy(copy);
|
||||
return PTR_ERR(msg);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче