Received: by 10.213.65.68 with SMTP id h4csp1024954imn; Sun, 18 Mar 2018 11:23:53 -0700 (PDT) X-Google-Smtp-Source: AG47ELuLx9z/wvUEjhVF0Ma+39ze9iYEdu/6l7B8dgzJV19rAM9+atNBGDDip10f4U61YuUbkiaH X-Received: by 2002:a17:902:580e:: with SMTP id m14-v6mr9455092pli.389.1521397433147; Sun, 18 Mar 2018 11:23:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521397433; cv=none; d=google.com; s=arc-20160816; b=Tf6KOOyArgdynKsJaRa+RjuRkvMLAoXMKGL3hagu2FCvmtGsxPLD4H1ewGlZcJKb1s 4hDfzNNnYRwRqk6tImQHsN1676eh03Z/zZl64Cq34envuAM9wu+bCVJFW1JIEEdQJ56h TF76NLiqcgakWdwuFFYz9QqThpK7uTRWJuwKc7jHlWw/REUiTbm/a5cF1ukFhBNTqyfF OL5gMcf8FHsVyMS08EkylxQy8G4qw0L3N2PdtEyQ11Yrr6MbpPcsf+q3w/TjN2qAjnKF DpmqlGNYUMyzRc/Zwi3ZnGMe9mch8qqQwESAkClER/8b6zQ4B3cdcjHaoVeJ4aYCTtcJ v8Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature:dkim-signature :arc-authentication-results; bh=av9ATbX5S3ocfyFPt9BAvkcZZFTXguC/FZR6vo5WPY8=; b=KvtG8/kjHRiPSV6RKFWB6JUn61sBWlU4dtRdho7ls0HRasbi6PZ29TZUpVB4uq04+/ CDs43wuJA5Z8B6IPNuN9qEpTIs9vFSIKbLJ1fKbgVC33TffG+1bv1reFRZTb9JoVW7h4 iI5O3wbkXXmTROi2+nyY7Gq7cEM4cOxQM1CwpMPv/qKZ47FVPSegYxh20/FiepdiFM55 hz3pCamE9SGl0trFRDuEOPijPek3qTZqMLSo87Puge5djABjjMi6cr4vYQae9sbi/YqU MXtgDVvYM6aPIPEmIFs0cr8U3goXgBssB2uN9EJEqLodzkzc3u4XkoOzuUeOU05cjR5H qT9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=R+bObYMy; dkim=fail header.i=@linux-foundation.org header.s=google header.b=JK9oOKtn; 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 66si6561365pfo.231.2018.03.18.11.23.39; Sun, 18 Mar 2018 11:23:53 -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=fail header.i=@gmail.com header.s=20161025 header.b=R+bObYMy; dkim=fail header.i=@linux-foundation.org header.s=google header.b=JK9oOKtn; 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 S1754259AbeCRSVd (ORCPT + 99 others); Sun, 18 Mar 2018 14:21:33 -0400 Received: from mail-it0-f41.google.com ([209.85.214.41]:36600 "EHLO mail-it0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751061AbeCRSV1 (ORCPT ); Sun, 18 Mar 2018 14:21:27 -0400 Received: by mail-it0-f41.google.com with SMTP id u5-v6so7646663itc.1; Sun, 18 Mar 2018 11:21:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=av9ATbX5S3ocfyFPt9BAvkcZZFTXguC/FZR6vo5WPY8=; b=R+bObYMyOWgbJO7BFDSC68fEeZWAKMF6kHQ9riBMtHJJ9DGKEavLasny4aqWvnJKAJ sQFQ9zG6sHe35q4jsTc6zQwOagTjC5tFO/rY2WQR/HyCvozX8NcQndyyTx/0R/bHGV7X uUi2f0xiBbxqKSp3pZU2ZnG+/6ayljFE+j6jzz5J0+vVc8glCHqd4bdVkuNvCUSKhDDT 7wMc1A2+rxVNOJuDgsOZc7JVxcWVtalcEDBlph2bUFfdfsniT1wcjCON/JCpDgPs3wnc tj8Uu3l/MslpHhHhv+/5rP9Y8+PYo2koppxomeyon/5EUeuL8IcRoDXYLs8YT5lMgDoM x4Ug== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=av9ATbX5S3ocfyFPt9BAvkcZZFTXguC/FZR6vo5WPY8=; b=JK9oOKtnqlNkjX/QVj4gnKDzkHe1fEtvw9Xkodex7694OEFOaU5Q6eB+8qpE2IB+Hb a5okR1eehXEnqfRttqGir64K9p4qrhOfPbFpNZt96QOc9ykUWUNSYMEAdkzFbmGGUV+v y0eqnf08aQhh9zrjl+52TI24Qhcbv15Ybtd/c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=av9ATbX5S3ocfyFPt9BAvkcZZFTXguC/FZR6vo5WPY8=; b=So1fQhldecFETNNbYON9bGl7v6cNI9iuhU5V00ei882vA7AHIX00CrDekeZH8Q2qML i04JHljdJ+GtRTlMMdeaZycrZWB7xsBob0aM34UaRehKPISx/Y2Uinkqa6CNH1BGEkSp 065R6guJvvD0S1dGLcxSuxD91nzSroGbQSZBhDoqcOm8f4VMSHE+AbR7KZLAr0CR8eqM QgUs1MbIgmEJRCZPRhdam16HNrkIvjBBmWebcKQaW7PzM+UTdTEd8vXwTJvthlSdYCWC CTOT+IX58HXt0sYihcYw+T07opJ1AIDGh6IMkH4vbg0TVrA8k3dIl3JxvZF2J/C4sPKC ByTg== X-Gm-Message-State: AElRT7FRGy5lkNIbwYcT+vUVKllAinINrHCU31Pm/ZwyKEcO3HojM8MN 87ApC2z+zXxRLGN9KGjVtHBZ8ejF684WvSED6fY= X-Received: by 2002:a24:9985:: with SMTP id a127-v6mr3809395ite.108.1521397286690; Sun, 18 Mar 2018 11:21:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.95.15 with HTTP; Sun, 18 Mar 2018 11:21:26 -0700 (PDT) In-Reply-To: <20180318161056.5377-3-linux@dominikbrodowski.net> References: <20180318161056.5377-1-linux@dominikbrodowski.net> <20180318161056.5377-3-linux@dominikbrodowski.net> From: Linus Torvalds Date: Sun, 18 Mar 2018 11:21:26 -0700 X-Google-Sender-Auth: Z-ypqIZ2YXmTq0IEfnREj8CbBnc Message-ID: Subject: Re: [RFC PATCH 2/6] fs: provide a generic compat_sys_truncate64() implementation To: Dominik Brodowski Cc: Linux Kernel Mailing List , Arnd Bergmann , Al Viro , linux-arch , Ralf Baechle , James Hogan , linux-mips , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , ppc-dev , Martin Schwidefsky , Heiko Carstens , linux-s390 , "David S . Miller" , sparclinux@vger.kernel.org, Ingo Molnar , Jiri Slaby , "the arch/x86 maintainers" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Mar 18, 2018 at 9:10 AM, Dominik Brodowski wrote: > +#ifdef __ARCH_WANT_COMPAT_SYS_TRUNCATE64 > +#if defined(__ARCH_WANT_COMPAT_SYS_WITH_PADDING) && \ > + defined(__ARCH_WANT_LE_COMPAT_SYS) > +COMPAT_SYSCALL_DEFINE4(truncate64, const char __user *, filename, u32 padding, > + unsigned int, offset_low, unsigned int, offset_high) > +#elif defined(__ARCH_WANT_COMPAT_SYS_WITH_PADDING) && \ > + !defined(__ARCH_WANT_LE_COMPAT_SYS) > +COMPAT_SYSCALL_DEFINE4(truncate64, const char __user *, filename, u32 padding, > + unsigned int, offset_high, unsigned int, offset_low) > +#elif !defined(__ARCH_WANT_COMPAT_SYS_WITH_PADDING) && \ > + defined(__ARCH_WANT_LE_COMPAT_SYS) > +COMPAT_SYSCALL_DEFINE3(truncate64, const char __user *, filename, > + unsigned int, offset_low, unsigned int, offset_high) > +#else /* no padding, big endian */ > +COMPAT_SYSCALL_DEFINE3(truncate64, const char __user *, filename, > + unsigned int, offset_high, unsigned int, offset_low) > +#endif > +{ > +#ifdef CONFIG_SPARC > + if ((int) offset_high < 0) > + return -EINVAL; > +#endif > + return do_sys_truncate(filename, > + ((loff_t) offset_high << 32) | offset_low); > +} > +#endif /* __ARCH_WANT_COMPAT_SYS_TRUNCATE64 */ This really screams out for a sparc-specific wrapper, or maybe that #ifdef CONFIG_SPARC should just happen for everybody. But regardless, code like the above is completely unacceptable. And yes, it also shows that my suggested alternative doesn't really work, because of the way the padding changes the number of arguments, giving that whole COMPAT_SYSCALL_DEFINE 3-vs-4 argument version. So I think just making it be arch-specific is the right thing. Alternatively, the COMPAT_SYSCALL_DEFINE() macro could be made smarter and do self-counting. There are generally tricks to count macro arguments, particularly when you know that they are limited. Things like #define NARG(...) __NARG(__VA_ARGS__##, 6,5,4,3,2,1) #define _NARG(a,b,c,d,e,f,...) f or something (I may have screwed that up, you get the idea). Linus