linux-hardened/ipc
Pierre Peiffer b1ed88b47f IPC: fix error check in all new xxx_lock() and xxx_exit_ns() functions
In the new implementation of the [sem|shm|msg]_lock[_check]() routines, we
use the return value of ipc_lock() in container_of() without any check.
But ipc_lock may return a errcode.  The use of this errcode in
container_of() may alter this errcode, and we don't want this.

And in xxx_exit_ns, the pointer return by idr_find is of type 'struct
kern_ipc_per'...

Today, the code will work as is because the member used in these
container_of() is the first member of its container (offset == 0), the
errcode isn't changed then.  But in the general case, we can't count on
this assumption and this may lead later to a real bug if we don't correct
this.

Again, the proposed solution is simple and correct.  But, as pointed by
Nadia, with this solution, the same check will be done several times (in
all sub-callers...), what is not very funny/optimal...

Signed-off-by: Pierre Peiffer <pierre.peiffer@bull.net>
Cc: Nadia Derbey <Nadia.Derbey@bull.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-06 10:41:01 -08:00
..
compat.c fix logic error in ipc compat semctl() 2007-07-06 10:23:43 -07:00
compat_mq.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipc_sysctl.c ipc namespace: remove config ipc ns fix 2007-10-17 08:42:57 -07:00
Makefile [PATCH] sysctl: move SYSV IPC sysctls to their own file 2007-02-14 08:09:59 -08:00
mqueue.c ipc: lost unlock and fput in mqueue.c on error path 2007-11-29 09:24:52 -08:00
msg.c IPC: fix error check in all new xxx_lock() and xxx_exit_ns() functions 2008-02-06 10:41:01 -08:00
msgutil.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
sem.c IPC: fix error check in all new xxx_lock() and xxx_exit_ns() functions 2008-02-06 10:41:01 -08:00
shm.c IPC: fix error check in all new xxx_lock() and xxx_exit_ns() functions 2008-02-06 10:41:01 -08:00
util.c IPC: fix error case when idr-cache is empty in ipcget() 2007-10-19 11:53:49 -07:00
util.h ipc: remove unneeded parameters 2007-10-19 11:53:48 -07:00