From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78662C4727D for ; Sat, 26 Sep 2020 18:30:25 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D67A42311D for ; Sat, 26 Sep 2020 18:30:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D67A42311D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arndb.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E84076B005C; Sat, 26 Sep 2020 14:30:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E36026B005D; Sat, 26 Sep 2020 14:30:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CD47B6B0068; Sat, 26 Sep 2020 14:30:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0066.hostedemail.com [216.40.44.66]) by kanga.kvack.org (Postfix) with ESMTP id AEAE66B005C for ; Sat, 26 Sep 2020 14:30:23 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 64EB0180AD804 for ; Sat, 26 Sep 2020 18:30:23 +0000 (UTC) X-FDA: 77306052726.28.war22_01167f827172 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin28.hostedemail.com (Postfix) with ESMTP id 490F06C05 for ; Sat, 26 Sep 2020 18:30:23 +0000 (UTC) X-HE-Tag: war22_01167f827172 X-Filterd-Recvd-Size: 5357 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.130]) by imf46.hostedemail.com (Postfix) with ESMTP for ; Sat, 26 Sep 2020 18:30:22 +0000 (UTC) Received: from mail-qk1-f170.google.com ([209.85.222.170]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.129]) with ESMTPSA (Nemesis) id 1M5Q6n-1kKs360rHJ-001QR0 for ; Sat, 26 Sep 2020 20:30:21 +0200 Received: by mail-qk1-f170.google.com with SMTP id w12so6413024qki.6 for ; Sat, 26 Sep 2020 11:30:20 -0700 (PDT) X-Gm-Message-State: AOAM530542lBJX8Y9kuYzf78gjk7nyAsHV69RGLqG8SPjNcXoptBtjx3 7k0uq6CdaIdB+4BMShlv/HEYWj+zytRrwWta4W4= X-Google-Smtp-Source: ABdhPJwCDr8g+GQISXGwNaC9OvKKW7eMeA3fyHA5nqFJbGySKsf2kM84dVn3Zi7lVXofFxzjg00nZbrxbqxgBaA40NE= X-Received: by 2002:a37:a495:: with SMTP id n143mr5509549qke.394.1601145019643; Sat, 26 Sep 2020 11:30:19 -0700 (PDT) MIME-Version: 1.0 References: <20200918124624.1469673-1-arnd@arndb.de> <20200918124624.1469673-6-arnd@arndb.de> <20200919053233.GH30063@infradead.org> In-Reply-To: <20200919053233.GH30063@infradead.org> From: Arnd Bergmann Date: Sat, 26 Sep 2020 20:30:03 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 5/9] ARM: oabi-compat: rework epoll_wait/epoll_pwait emulation To: Christoph Hellwig Cc: Russell King , Alexander Viro , "linux-kernel@vger.kernel.org" , Linux ARM , linux-arch , Linux-MM Content-Type: text/plain; charset="UTF-8" X-Provags-ID: V03:K1:SBTwzs4flAB5iUXXInCcpO1BuQQtSlbNRYR02e1EFaIhOx3c7lY I6guI10VNe7lfwsLb+qAoHn82tUDFaw4nlVJcuqSc9wNi3+6E9DYA4UDHRQ0eMTmd/B7rYb zBnTlEDXGIdnb+zaRGEACMIjS3Uwxsb6gLwF1N0Hj7OBM/GnIaUGsVVNwT3crx1gle2tIrg yHTnrVLKDKQFsdxlQa7fg== X-UI-Out-Filterresults: notjunk:1;V03:K0:MwHok24XrBA=:v2zlOTvbqiT8YFZq6dHMmn SFqox1rh1Ade+oqYiUEOx5cN023L2REw7D3x441OTHAcLELYc4MOVYWAbMEr2WHOjb0Q8dl4O gzy9nAc2ATmLl+l7UBpF8Idh5b2hGS+xvDk3duKzu22VpJXhNIup3ZZz5siSNS3ZJtb/Y5A+Y wnDmg41Kbc5bNRj5LulIPtw3Xs/NKvBkL0x/xYO/B99HCG+fbooLTr/tJs6aBR0RYW7Wdf+JX /DmJzGr9L3o2DX5pPrcq9OMCq1B/qEwPFrVW2C6oZg/89lImdq0bAUK+Hyg3KwPm5dS/rWsSM 4eLrddZM7iPJekGsUQ88N4onG/CLsZSQaYaxmnT3uhr2QIuLAfSYTxdk4p2QRCkEjXph7A096 b5TLg9bGECjBvO6XJvXX8ipLp+F3vCycn99mhpaBrtCAqP/Cjn87rzS0TH47eYcfYoPMcHaVI 10V0iRKt50k8T3EV1UUTyIuFs7UCKii/WysS9vQsiL51F/Vj+lp4mgugT0pv7krQi78H3Y48w eaMr4vJo7LzEGlcq/rKl39tkDhaj/Lzd2rlcTzBm9+N9/uXUQxsqTpvttywRjrZvy0zsC8g/J zA3X6gNnzyfW5kNXRh2i4+ckokwm/CjKyh+lSMaaXBk4fMRjguIwZwNv65ePG23out1N82ByL N4uWUa1DuLV2k6qyf9eHgzk275ARyDFeKv2ABHOhWJ/0C2SYYMvTs4ES5glfSPEcL/Utlpvq5 6dR/C5cYY/O6XbfO8b37+6MGX7CY+BHAdkV6fY6mcCCPpHKyNvXGciM+1IouGjhdMwD6XV5+b iPmV12ieG+QZ+FM1RhVZWVx7jaWykFUcQ53yBplHfJwuuq8j2inInEqG2WaMpKA42STHwjY X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sat, Sep 19, 2020 at 7:32 AM Christoph Hellwig wrote: > > > index 855aa7cc9b8e..156880943c16 100644 > > --- a/arch/arm/include/asm/syscall.h > > +++ b/arch/arm/include/asm/syscall.h > > @@ -28,6 +28,17 @@ static inline int syscall_get_nr(struct task_struct *task, > > return task_thread_info(task)->syscall & ~__NR_OABI_SYSCALL_BASE; > > } > > > > +static inline bool __in_oabi_syscall(struct task_struct *task) > > +{ > > + return IS_ENABLED(CONFIG_OABI_COMPAT) && > > + (task_thread_info(task)->syscall & __NR_OABI_SYSCALL_BASE); > > +} > > + > > +static inline bool in_oabi_syscall(void) > > +{ > > + return __in_oabi_syscall(current); > > +} > > + > > Maybe split these infrastructure additions into a separate helper? Sorry, I'm not following what you mean by this. Both of the above are pretty minimal helpers already, in what way could they be split further? > So after you argued for this variant I still have minor nitpicks: > > I alway find positive ifdefs better where possible, e.g. > > #if defined(CONFIG_ARM) && defined(CONFIG_OABI_COMPAT) > external declaration here > #else > the real thing > #endif Ok. > but I still find the fact that the native case goes into the arch > helper a little weird. Would you prefer something like this: static inline struct epoll_event __user * epoll_put_uevent(__poll_t revents, __u64 data, struct epoll_event __user *uevent) { #if defined(CONFIG_ARM) && defined(CONFIG_OABI_COMPAT) /* ARM OABI has an incompatible struct layout and needs a special handler */ extern struct epoll_event __user * epoll_oabi_put_uevent(__poll_t revents, __u64 data, struct epoll_event __user *uevent); if (in_oabi_syscall()) return epoll_oabi_put_uevent(revents, data, uevent); #endif if (__put_user(revents, &uevent->events) || __put_user(data, &uevent->data)) return NULL; return uevent+1; } That would keep the native case in one place, but also mix in more architecture specific stuff into the common source location, which again seems worse to me. Arnd