Received: by 2002:a05:6a10:6006:0:0:0:0 with SMTP id w6csp1463544pxa; Fri, 28 Aug 2020 13:18:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKMEWNp5C5zQnP+Re44qRSAwcZbbLmf4Vw6GU/Kj3a0GwVeLe9D+ewMpoI1sU8RJ5KM6p4 X-Received: by 2002:a17:906:2a04:: with SMTP id j4mr471765eje.440.1598645936410; Fri, 28 Aug 2020 13:18:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598645936; cv=none; d=google.com; s=arc-20160816; b=BS47Ie6brtF5bD0jqolHs/oE9s9HYeNhw5MAVMb20AhYpbNUz8YcJgb9TGJvDs9bwV wDVgs1nRYslQ9stSqcjvME9OozR2AWbJxdFTD1Q7JEohgIeoUB4OZuxiFf8bWWGFq/N7 fSNHyf/uCgOgVYjSYJ78J7Hjs5VLa3ERK2A7DXvQNEdeSHJEggm0pTFZOEaSu7MHbo4P bl+AcDUrMDplkFYv7ZfFiSLKFzY/nOdSaNdywNB3tx+o/lL/FU8VFWa8lfCRs/SHrGdG au8Xs3QxGoHYGRuEFdfIU5hpWNHkvfAYzJjyL+J7H6fJE5gCTbf0jQqbmOm0+/M60er0 0mWg== 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 :in-reply-to:references:mime-version; bh=2d6gJINUv1NZI3X0wlGLhuc40R3cAw7yHIcKdMTVPn0=; b=ql31AaE7pqeTaFpfInqrZP2ulR2xcbR6oQqOFPup9ten/zNQBOX9WEa4VQROIC4aHP o+HBZVMEDobJ0D1XWs0sNrtXBLrZXcH5PUTt0vG7Y+bJGiX0PnwKUSF8/V3pt1n6Pqmy SqsHsMXrVCA6QxqBdrW4L4CItgbAW1y8bqyHf3bAIgAyonlD6euKq92cIV9wDjcPMwHB /db/b1CSXClVc6X7XVidJHiw4HmIvdDfnH2O0Vn8ZTHMqBP0WkB0YDWk+vZS909+938D 38LqTZv5eehXosYMxqWUB9VUeNOUE+zSl5jRd5ew8zMJIR8fAvBRjmwc8CneBUWq5t9F 2z5A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h13si367190ejx.624.2020.08.28.13.18.33; Fri, 28 Aug 2020 13:18:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726775AbgH1UPp (ORCPT + 99 others); Fri, 28 Aug 2020 16:15:45 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:48187 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726146AbgH1UPn (ORCPT ); Fri, 28 Aug 2020 16:15:43 -0400 Received: from mail-qk1-f175.google.com ([209.85.222.175]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.129]) with ESMTPSA (Nemesis) id 1MS43X-1k0w3a1rdj-00TU2H; Fri, 28 Aug 2020 22:15:41 +0200 Received: by mail-qk1-f175.google.com with SMTP id g72so204338qke.8; Fri, 28 Aug 2020 13:15:41 -0700 (PDT) X-Gm-Message-State: AOAM5331iSCAYRtGmzgu+rq3Lq2kDdtGxdGldSh7WOtPnW/VNRPyAgqC boaVuzk+1UouW8HWvJ8PblfeaOVw4CCZCClGYEI= X-Received: by 2002:a37:a04b:: with SMTP id j72mr892253qke.352.1598645740122; Fri, 28 Aug 2020 13:15:40 -0700 (PDT) MIME-Version: 1.0 References: <20200622192900.22757-1-minchan@kernel.org> <20200622192900.22757-4-minchan@kernel.org> <9c339413-68c7-344e-dd01-327cb988d385@kernel.dk> In-Reply-To: From: Arnd Bergmann Date: Fri, 28 Aug 2020 22:15:24 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v8 3/4] mm/madvise: introduce process_madvise() syscall: an external memory hinting API To: Jens Axboe Cc: Minchan Kim , Andrew Morton , LKML , Christian Brauner , linux-mm , Linux API , Oleksandr Natalenko , Suren Baghdasaryan , Tim Murray , Sandeep Patil , Sonny Rao , Brian Geffon , Michal Hocko , Johannes Weiner , Shakeel Butt , John Dias , Joel Fernandes , Jann Horn , alexander.h.duyck@linux.intel.com, SeongJae Park , David Rientjes , Arjun Roy , Vlastimil Babka , Christian Brauner , Daniel Colascione , Kirill Tkhai , SeongJae Park , linux-man Content-Type: text/plain; charset="UTF-8" X-Provags-ID: V03:K1:nyLHj6ZpuzHpQ/Rd2Zu2ZXBe+DoHH8w3eBCH+32bWGdcQqn303K /toMw6tB1D0VEVbfcBpipXwuXza07IgVsiY6a1nX4T/okWht3ONmbaiWoBfg7WkLg2xDUo0 JnWfRr2eAG31Xl7tZ06m50/3gEY2iGyZoryyr0eupPi1V4KQ2qjC0XW6WpEvtKBsW0susOp VqSXHs4R2Ls4zQu7Tx70Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:7msRCAyRGig=:DAPNv7qMT9UJ8LGCCJMsYg i9VkG4C7kuFe9V9lQ3fFeZnp54+jORtKOSaBCTchQWjnHDeKFkuUYEQ7x5PC2R0dhgmpYTL8T EJvbZ27r4EC0qcpRs5T5E0Yi5ZVTXnylbdOiJ4pvNlOE8tmpeNOScD0oGM9wb0Tr1Tl78swol vdhL9izIxBzx1ebZ8hPHzR9YLRH6dAMGPiHwH0By7YLILRMJehpec+9PTfk6nNqx3mgQXYrU5 FkeQqdZBryVgG8qSEDEhKJAkNKuqlfB03zuc/Z/32p5lujRx4TkcBqvMLteb+I/0s8b1S6mXD MHY8AnS4yXtZjkB9R8nONJJTxVeqSNIFx/JwfyxQAI03sVpG7/Yne1/XPn81NAPev3PFgbONc McLl0MQNN9HpfyJbU1xj25suvPMsJMIMlbpn0EIH2N8cXlmE1eMTPwNiUcmZi11m5stcWqNYK aPn6YkJ3dLXgYIBNZ7bFwG2qH9N2uknSXE5i52zH2uZmq17QLVPksdSMWcHRxSNa+u4mkKpjI 0O8012W/3RBizbqFYxXUw1DcPjcvom2Aqqz4YJhmtFMxaVo9/xda/ofktyLGIJn+pS6jZzHFH Uh9q/WEHR8BAVtmsf9yFJzf0fbWQF7bvHLPZ4rG/0tt7jZjC5gZkeDUmFUGikTWRyiAGm9ycS nnS66N/IZ2S+rRYLrB30mqpON3X/cEhLNrWiOT/gyxVc/r2dhvpEA6ey5LnoKQiZaif9Pewuq 2YWb+9HmLgI0O7VWq0pRDui9KQiBwTigdT5wwg16wW7RxCELirjHu3IA+Q06fkVc9s+txrR63 xUVE7RIQp3aJ/tEZLVkT6+iSgfWn41SayDMenKgLpe+4Vo49iqU6Wsow03ny4rZEl+s5xFn Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 28, 2020 at 9:27 PM Jens Axboe wrote: > On 8/28/20 12:24 PM, Jens Axboe wrote: > >> @@ -1683,8 +1683,13 @@ ssize_t import_iovec(int type, const struct > >> iovec __user * uvector, > >> { > >> ssize_t n; > >> struct iovec *p; > >> - n = rw_copy_check_uvector(type, uvector, nr_segs, fast_segs, > >> - *iov, &p); > >> + > >> + if (in_compat_syscall()) > >> + n = compat_rw_copy_check_uvector(type, uvector, nr_segs, > >> + fast_segs, *iov, &p); > >> + else > >> + n = rw_copy_check_uvector(type, uvector, nr_segs, > >> + fast_segs, *iov, &p); > >> if (n < 0) { > >> if (p != *iov) > >> kfree(p); > > > > Doesn't work for the async case, where you want to be holding on to the > > allocated iovec. But in general I think it's a good helper for the sync > > case, which is by far the majority. > > Nevermind, I'm an idiot for reading this totally wrong. > I think you are right about the need to pick the compat vs native behavior based on req->ctx->compat instead of in_compat_syscall() inside of io_import_iovec(). That one can probably call a lower-level version and when all other callers get changed to calling ssize_t import_iovec(int type, const struct iovec __user * uvector, unsigned nr_segs, unsigned fast_segs, struct iovec **iov, struct iov_iter *i) { return __import_iovec(type, uvector, nr_segs, fast_segs, iov, i, in_compat_syscall()); } Arnd