Received: by 10.192.165.156 with SMTP id m28csp123552imm; Wed, 18 Apr 2018 18:39:04 -0700 (PDT) X-Google-Smtp-Source: AIpwx49TQ8tvoVwHddeH2pkC9VmV8TfMIV3z0+OQ5EpM2ykgCkgNRECK/g6aJoOuUd5ctgbagcaz X-Received: by 10.99.188.9 with SMTP id q9mr3437152pge.381.1524101944800; Wed, 18 Apr 2018 18:39:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524101944; cv=none; d=google.com; s=arc-20160816; b=p9pfXYbHVToV2HLJ+0C14oNqBvAVXnLFqxQawiEiKz7l55oRM4qq0aV9aaQGx49VJY f/JnmNFJa0Yh2Yzpf7idSD/JgeIM7e3OotIgLdGqcwCWqv0f6ErfBkdNTjJfoE5cKxyk NrJx1NaG2jfWQI89Pvri6KIK0pSa18QYCN1VqNZTKGS/OgMzQmExPfJy6+BSCjHKZMwA ldEZ3jBLM8+Clmq8Wsy15j3pUaZ2e4dm2Mw3hYQI3IQ92WCAs0QlUrcpQaDsLSkQmrDD xrd7TZ3uvHa3UJxffuQ1czdhgTwSZ9kWMi6Cyv2B9NPWNCQ1C5jmvuu1g4gVKFlKnt74 9DhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature:arc-authentication-results; bh=Ef6HU4alx6YVm26JmzCKeU3l+xtD84NdvhKh3r7VJGw=; b=BRI+4kaw3ObtEx5UbKLiDDy5UkyjxBIN1VNLv8O+zcnWD4FYfTCq5bGCwQc8tjM6Ct 9n7kClSaB2kMrY9eWD6XlddZQK0UyINwnDLB+QopkiOMJqQ4EjBtMVjbmoI4pnyptiQP PoZ2BDqWXZHzt0MCQzokx8O4glh84eO4vcPLDCgxGk3nFvXxDVylBhrpJQ19EWLiMTeT kEkeJ8a5LZugMLdS508CWK9TiC2vW46jtZC4T6yK5rwULkDwaXkouOHavtra6jUfnt0i lbfA3pneZk1UKrFy598m+xtha5bni3X1MKyana+2HwyIWxsioVdfNV4sRjRoxUjxu+Yg FLcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amacapital-net.20150623.gappssmtp.com header.s=20150623 header.b=XjF9Zsz5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e12si2050568pff.366.2018.04.18.18.38.50; Wed, 18 Apr 2018 18:39:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amacapital-net.20150623.gappssmtp.com header.s=20150623 header.b=XjF9Zsz5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753501AbeDSBgD (ORCPT + 99 others); Wed, 18 Apr 2018 21:36:03 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:33427 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752291AbeDSBgA (ORCPT ); Wed, 18 Apr 2018 21:36:00 -0400 Received: by mail-qk0-f196.google.com with SMTP id d206so3904392qkb.0 for ; Wed, 18 Apr 2018 18:36:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amacapital-net.20150623.gappssmtp.com; s=20150623; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Ef6HU4alx6YVm26JmzCKeU3l+xtD84NdvhKh3r7VJGw=; b=XjF9Zsz5nhw8Fy1YPQytfUm0L80votF0wRAMCeW0MjUN68e8IwFadLlxOBeYbDhtLj wJiPLZhHkpnyv/frQq2wpFGPd9aSFFQHlmBDfnJ3nKgP8OfeBszTWL7zyEnbHIKklPm2 c/T814+1sfYhfXNdenVfM6gXmVNaEzsJRJCJd8j76cqHm+IyxbQzez+qu8Qle+pie074 rSDTJzKRKcTmUlPkN7/sSBCu4f8KrqwiixFerZx0+YSN6VjKvQXQdfintYdSbmE3bS4d E6nU8LhfDSHIxVbr11zR5WCuCrIWghd2Y4PkHsYRix4RpiMxCXuNq8HrY5Ro3P7YMWqY WYMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Ef6HU4alx6YVm26JmzCKeU3l+xtD84NdvhKh3r7VJGw=; b=Dud6IpwCv9ySwM6+UmYyQT1X3s5VFXjWTundsswcQLyfRS9cEi1uSa3dyKoDM1OaCQ z+prHxgMQu42RGpXkk+MVZO2vxfEFoF69SSQ4L6wbi4uF96/36vwJDVcIUnXoYRhucQX zM65pCh8YpooNp0NI6LrX9CMtgpDeKHzQA3mQd2o+Ad92hBJHc2ygEvHE0NG1z4j2Gik FY2JobfFTmIMkgANa4ykFAy9CAFoQOpTAMn10IGc/YnTl+G1q5Ls2p8MtjvxHB3Fc2fo BVLja4r3CAi/bBgTekhZXycSOun/4X/N5qBhjeRlSOWuJ/jclPhYTEJpRtGX+XjGHt/+ 9AtQ== X-Gm-Message-State: ALQs6tDSmctfclLpi2XgsjjIa0qAyFzFbYmHFVlUF/5IEjHAV4QRczKs 0YHLnpmvkKlWXIFu46vRGpqxkLwd6+A= X-Received: by 10.55.9.142 with SMTP id 136mr3907187qkj.48.1524101759707; Wed, 18 Apr 2018 18:35:59 -0700 (PDT) Received: from ?IPv6:2601:18d:4800:5fa8:2569:3dcb:36a6:cfd6? ([2601:18d:4800:5fa8:2569:3dcb:36a6:cfd6]) by smtp.gmail.com with ESMTPSA id i78sm156820qke.63.2018.04.18.18.35.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 18:35:58 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (1.0) Subject: Re: [PATCH v2] prctl: fix compat handling for prctl From: Andy Lutomirski X-Mailer: iPhone Mail (15E216) In-Reply-To: <1524099966-43544-1-git-send-email-huawei.libin@huawei.com> Date: Wed, 18 Apr 2018 21:35:58 -0400 Cc: Al Viro , "Eric W. Biederman" , Dominik Brodowski , Andrew Morton , Andy Lutomirski , linux-kernel@vger.kernel.org, guohanjun@huawei.com Content-Transfer-Encoding: quoted-printable Message-Id: <0E66E9A1-9562-481C-A66C-9C518ADE29B6@amacapital.net> References: <1524099966-43544-1-git-send-email-huawei.libin@huawei.com> To: Li Bin Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Apr 18, 2018, at 9:06 PM, Li Bin wrote: >=20 > The member auxv in prctl_mm_map structure which be shared with > userspace is pointer type, but the kernel supporting COMPAT didn't > handle it. This patch fix the compat handling for prctl syscall. >=20 > Signed-off-by: Li Bin > --- > kernel/sys.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 42 insertions(+) >=20 > diff --git a/kernel/sys.c b/kernel/sys.c > index ad69218..d4259938 100644 > --- a/kernel/sys.c > +++ b/kernel/sys.c > @@ -1969,6 +1969,26 @@ static int validate_prctl_map(struct prctl_mm_map *= prctl_map) > } >=20 > #ifdef CONFIG_CHECKPOINT_RESTORE > + > +#ifdef CONFIG_COMPAT > +struct compat_prctl_mm_map { > + __u64 start_code; /* code section bounds */ > + __u64 end_code; > + __u64 start_data; /* data section bounds */ > + __u64 end_data; > + __u64 start_brk; /* heap for brk() syscall */ > + __u64 brk; > + __u64 start_stack; /* stack starts at */ > + __u64 arg_start; /* command line arguments bounds */ > + __u64 arg_end; > + __u64 env_start; /* environment variables bounds */ > + __u64 env_end; > + compat_uptr_t auxv; /* auxiliary vector */ > + __u32 auxv_size; /* vector size */ > + __u32 exe_fd; /* /proc/$pid/exe link file */ > +}; > +#endif > + > static int prctl_set_mm_map(int opt, const void __user *addr, unsigned lon= g data_size) > { > struct prctl_mm_map prctl_map =3D { .exe_fd =3D (u32)-1, }; > @@ -1986,6 +2006,28 @@ static int prctl_set_mm_map(int opt, const void __u= ser *addr, unsigned long data > if (data_size !=3D sizeof(prctl_map)) > return -EINVAL; >=20 > +#ifdef CONFIG_COMPAT > + if (in_compat_syscall()) { > + struct compat_prctl_mm_map prctl_map32; > + if (copy_from_user(&prctl_map32, addr, sizeof(prctl_map32))) > + return -EFAULT; > + > + prctl_map.start_code =3D prctl_map32.start_code; > + prctl_map.end_code =3D prctl_map32.end_code; > + prctl_map.start_data =3D prctl_map32.start_data; > + prctl_map.end_data =3D prctl_map32.end_data; > + prctl_map.start_brk =3D prctl_map32.start_brk; > + prctl_map.brk =3D prctl_map32.brk; > + prctl_map.start_stack =3D prctl_map32.start_stack; > + prctl_map.arg_start =3D prctl_map32.arg_start; > + prctl_map.arg_end =3D prctl_map32.arg_end; > + prctl_map.env_start =3D prctl_map32.env_start; > + prctl_map.env_end =3D prctl_map32.env_end; > + prctl_map.auxv =3D compat_ptr(prctl_map32.auxv); > + prctl_map.auxv_size =3D prctl_map32.auxv_size; > + prctl_map.exe_fd =3D prctl_map32.exe_fd; > + } else > +#endif > if (copy_from_user(&prctl_map, addr, sizeof(prctl_map))) > return -EFAULT; >=20 > --=20 > 1.7.12.4 >=20