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,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 F23DBC433E1 for ; Mon, 17 Aug 2020 15:10:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A0C472054F for ; Mon, 17 Aug 2020 15:10:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NwP/wuMK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A0C472054F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 03EFA6B0008; Mon, 17 Aug 2020 11:10:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F0AB36B000A; Mon, 17 Aug 2020 11:10:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D84636B000C; Mon, 17 Aug 2020 11:10:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0133.hostedemail.com [216.40.44.133]) by kanga.kvack.org (Postfix) with ESMTP id B7F6A6B0008 for ; Mon, 17 Aug 2020 11:10:44 -0400 (EDT) Received: from smtpin09.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 44C9E3630 for ; Mon, 17 Aug 2020 15:10:44 +0000 (UTC) X-FDA: 77160397608.09.fly42_410150a27017 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin09.hostedemail.com (Postfix) with ESMTP id 61463180AD838 for ; Mon, 17 Aug 2020 15:10:30 +0000 (UTC) X-HE-Tag: fly42_410150a27017 X-Filterd-Recvd-Size: 6814 Received: from mail-pj1-f67.google.com (mail-pj1-f67.google.com [209.85.216.67]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Mon, 17 Aug 2020 15:10:29 +0000 (UTC) Received: by mail-pj1-f67.google.com with SMTP id f9so7816636pju.4 for ; Mon, 17 Aug 2020 08:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=L3RRwQESDGLkgdgVQIMJ2W9+h4nJ3TxIZFutxrgNcxA=; b=NwP/wuMKXvRX/sJB9RIlTbirIYLc+UCffDtLWcNPwJh9SXjLWSl0V7jpvYJNAJX6Ax WpJUDP/enKjHNyTKaDLWKivxJqnZ4CYbml1Cg0F1nCz7GGOyh3WYPcY5J1eor+C2fLmZ 6SDHzJ2jjCbb3JvORkHomyQ0KtzUqF7kqfpp7VmwgT82nb1AlwfNyAyWHz2M/cyTLlCH XL8OnG8l/FhahgLTPsdv5V/L6XVRuBUqEj5ppiHVhje/RiVoIC2X95MMfSevoBwnLTxw pId/XU8ZLvMmiPMgS+XbcqaBHxw06rE2abOcwaheGV4vGNlYq2wMeiSXUji2BBrjMxAN DUiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to; bh=L3RRwQESDGLkgdgVQIMJ2W9+h4nJ3TxIZFutxrgNcxA=; b=aMYaHWyZLpQxAINpYTHHfRvGTa1hbhRWyGyhS8Coc0K3uBW4nkjaWkrRlytxEBQmfF mt1byKGZ8bjN8c6uwukz3YyzL1zWojk8Q0d1B/lSxanTxe0RzVyUZhWoJmDgsP8fnUUw RJ1Zqp2gyoLL1ZIlOW75V/gRdctf3RA9ubRl52vWeyfRbKiOUaXHsXKOOCduSQmwjWQQ h9pYxamZgD04qD+7NT+/Bw+3dpHPrZAzTOS8SK7uvz3QR0zex4Z+yA4qVF2kDb7/CF5k pVl1XmMd2oUQ8uPEKdKQ9swqp3PnhJtDTAehvuqedFG+FXnIPPCpAYbYjmFYDcezaecD rDJg== X-Gm-Message-State: AOAM532SIMIcusOipepMQ+FWNRXu0nuitx4VKRR/c8vk3lIlLC8tMlEw eE8TQgf0j99mUBvGZwiMC04= X-Google-Smtp-Source: ABdhPJyiaApxy/0DdKTVJPUkM9TLIVNN05FTWWfdcO6oP61af7oB07GshzC/yVt+jNPOOCOmUII1UQ== X-Received: by 2002:a17:90a:ac0b:: with SMTP id o11mr13640088pjq.191.1597677028669; Mon, 17 Aug 2020 08:10:28 -0700 (PDT) Received: from google.com ([2620:15c:211:1:7220:84ff:fe09:5e58]) by smtp.gmail.com with ESMTPSA id h9sm21631961pfq.18.2020.08.17.08.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2020 08:10:26 -0700 (PDT) Date: Mon, 17 Aug 2020 08:10:24 -0700 From: Minchan Kim To: Christian Brauner Cc: alexander.h.duyck@linux.intel.com, axboe@kernel.dk, bgeffon@google.com, christian@brauner.io, dancol@google.com, hannes@cmpxchg.org, jannh@google.com, joaodias@google.com, joel@joelfernandes.org, ktkhai@virtuozzo.com, linux-man@vger.kernel.org, linux-mm@kvack.org, mhocko@suse.com, mm-commits@vger.kernel.org, oleksandr@redhat.com, rientjes@google.com, shakeelb@google.com, sj38.park@gmail.com, sjpark@amazon.de, sonnyrao@google.com, sspatil@google.com, surenb@google.com, timmurray@google.com, torvalds@linux-foundation.org, vbabka@suse.cz, Andrew Morton Subject: Re: [patch 17/39] mm/madvise: introduce process_madvise() syscall: an external memory hinting API Message-ID: <20200817151024.GA3852332@google.com> References: <20200814172939.55d6d80b6e21e4241f1ee1f3@linux-foundation.org> <20200815003058.6OQJpEXTM%akpm@linux-foundation.org> <20200816081227.ngw3l45c5uncesmr@wittgenstein> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200816081227.ngw3l45c5uncesmr@wittgenstein> X-Rspamd-Queue-Id: 61463180AD838 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 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 Sun, Aug 16, 2020 at 10:12:27AM +0200, Christian Brauner wrote: > On Fri, Aug 14, 2020 at 05:30:58PM -0700, Andrew Morton wrote: > > From: Minchan Kim > > Subject: mm/madvise: introduce process_madvise() syscall: an external memory hinting API > > > > > > > +SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec, > > + unsigned long, vlen, int, behavior, unsigned int, flags) > > +{ > > + ssize_t ret; > > + struct iovec iovstack[UIO_FASTIOV]; > > + struct iovec *iov = iovstack; > > + struct iov_iter iter; > > + > > + ret = import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), &iov, &iter); > > + if (ret >= 0) { > > + ret = do_process_madvise(pidfd, &iter, behavior, flags); > > + kfree(iov); > > + } > > + return ret; > > +} > > + > > +#ifdef CONFIG_COMPAT > > +COMPAT_SYSCALL_DEFINE5(process_madvise, compat_int_t, pidfd, > > + const struct compat_iovec __user *, vec, > > + compat_ulong_t, vlen, > > + compat_int_t, behavior, > > + compat_uint_t, flags) > > + > > +{ > > + ssize_t ret; > > + struct iovec iovstack[UIO_FASTIOV]; > > + struct iovec *iov = iovstack; > > + struct iov_iter iter; > > + > > + ret = compat_import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), > > + &iov, &iter); > > + if (ret >= 0) { > > + ret = do_process_madvise(pidfd, &iter, behavior, flags); > > + kfree(iov); > > + } > > + return ret; > > +} > > +#endif > > Note, I'm only commenting on this patch because it has already been > dropped for this merge window. Otherwise I wouldn't interfer with stuff > that has already been sent for inclusion. > > I haven't noticed this before but why do you need this > COMPAT_SYSCALL_DEFINE5()? New code we add today tries pretty hard to > avoid the compat syscall definitions. (See what we did for > pidfd_send_signal(), seccomp, and in io_uring and in various other places.) > > Afaict, this could just be sm like (__completely untested__): > > static inline int madv_import_iovec(int type, const struct iovec __user *uvec, unsigned nr_segs, > unsigned fast_segs, struct iovec **iov, struct iov_iter *i) > { > #ifdef CONFIG_COMPAT > if (in_compat_syscall()) > return compat_import_iovec(type, (struct compat_iovec __user *)uvec, nr_segs, > fast_segs, iov, i); > #endif > > return import_iovec(type, uvec, nr_segs, fast_segs, iov, i); > } > > SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec, > unsigned long, vlen, int, behavior, unsigned int, flags) > { > ssize_t ret; > struct iovec iovstack[UIO_FASTIOV]; > struct iovec *iov = iovstack; > struct iov_iter iter; > > ret = madv_import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), &iov, &iter); > if (ret < 0) > return ret; > > ret = do_process_madvise(pidfd, &iter, behavior, flags); > kfree(iov); > return ret; > } > > or is there are specific reason this wouldn't work here? No, I just didn't know such trend to avoid compact syscall definitions. Thanks for the information. I think your suggestion will work. Let me have it at respin. Thanks!