[git pull] vfs.git regression fix Re: Regression related to ipc shmctl compat

From: Al Viro
Date: Mon Sep 25 2017 - 21:00:46 EST


On Mon, Sep 25, 2017 at 03:18:29PM -0700, Kyle Huey wrote:
> Beginning with 553f770ef71b, the following program fails when compiled
> for 32 bit and executed on a 64 bit kernel and succeeds when compiled
> for and executed on a 64 bit. It continues to fail even after
> 58aff0af7573. When compiled as 32 bit, an shmctl call fails with
> EBADR (see the XXX comment).

Egads...

static int put_compat_shm_info(struct shm_info *ip,
struct compat_shm_info __user *uip)
{
struct compat_shm_info info;

memset(&info, 0, sizeof(info));
info.used_ids = ip->used_ids;
info.shm_tot = ip->shm_tot;
info.shm_rss = ip->shm_rss;
info.shm_swp = ip->shm_swp;
info.swap_attempts = ip->swap_attempts;
info.swap_successes = ip->swap_successes;
return copy_to_user(up, &info, sizeof(info));
^^
This.

I really wish gcc warned about conversions from pointer to function into
void *...

Linus, could you pull that?

The following changes since commit 58aff0af757356065f33290d96a9cd46dfbcae88:

ipc/shm: Fix order of parameters when calling copy_compat_shmid_to_user (2017-09-20 23:27:48 -0400)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus

for you to fetch changes up to b776e4b1a990045a7c70798f1f353c3160c26594:

fix a typo in put_compat_shm_info() (2017-09-25 20:41:46 -0400)

----------------------------------------------------------------
Al Viro (1):
fix a typo in put_compat_shm_info()

ipc/shm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)