On Tuesday 14 November 2006 00:58, akpm@xxxxxxxx wrote:
Subject: Fix compat space msg size limit for msgsnd/msgrcv
From: suzuki <suzuki@xxxxxxxxxxxxxxxxxx>
Currently we allocate 64k space on the user stack and use it the msgbuf for
sys_{msgrcv,msgsnd} for compat and the results are later copied in user [by
copy_in_user].
This patch introduces helper routines for sys_{msgrcv,msgsnd} which would
accept the pointer to msgbuf along with the msgp->mtext. This avoids the
need to allocate the msgsize on the userspace (thus removing the size
limit) and the overhead of an extra copy_in_user().
Signed-off-by: Suzuki K P <suzuki@xxxxxxxxxx>
Cc: Arnd Bergmann <arnd@xxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
This patch is definitely a big step in the right direction here, but why not go all the way and pass msgp->mtype to do_msgsnd/do_msgrcv as kernel
data instead of a user space pointer? This way you can get rid of the
compat_alloc_userspace entirely and save avoid doing an extra put_user/get_user pair in the compat_ function.
Arnd <><