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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 457DFD1813F for ; Mon, 14 Oct 2024 20:09:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CF4C86B0085; Mon, 14 Oct 2024 16:09:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CA54E6B0088; Mon, 14 Oct 2024 16:09:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B6C486B0089; Mon, 14 Oct 2024 16:09:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 999486B0085 for ; Mon, 14 Oct 2024 16:09:18 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 28D97812B6 for ; Mon, 14 Oct 2024 20:09:11 +0000 (UTC) X-FDA: 82673297112.14.0B1A609 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf12.hostedemail.com (Postfix) with ESMTP id D312540007 for ; Mon, 14 Oct 2024 20:09:12 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=d87tZUlw; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of jannh@google.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728936451; a=rsa-sha256; cv=none; b=W+Gq86PXRuw9k5cpyEosLVEzktcX00tFA9/MNUNbEckliSZfKanRxO9zZA6T2KWBFi06w9 HLqBZTfxsKEJZ8900FDvcYedA53+gCZkjP45W8K8eZOF7QVoaHQoR9wK8CVI1SEuKiROvj FNTBniYFc+1FETj0JGdo3HuJV4MrH0E= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=d87tZUlw; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of jannh@google.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728936451; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r0zqaAbHeI1jkohxhnn3/eoqtBWz6fWnFImTtGcQALM=; b=QSg32URBXtJdiO0RFX7wjpOGcIInFfIjZB0Pg8hX4lYPmRXk1zlqqhC73j2dHmwcXVBX1x RVvupEyKe5cQW0WqosChh2uLWaXSsZCcgvhc7gQHK4ODJxe92/dgRhPhA+HNbInfGubGMi V0ksISiZ6VxoMwMPXJLKhKHwy0lX1fo= Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5c93e9e701fso25674a12.1 for ; Mon, 14 Oct 2024 13:09:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1728936555; x=1729541355; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=r0zqaAbHeI1jkohxhnn3/eoqtBWz6fWnFImTtGcQALM=; b=d87tZUlwlNZJaUEgckYCFbnF+Qo8ASEU440VdHIP8SRdEEAxpDPaNX7zAJVuQIjX+n KaI6fRlevlOW7EvcQzq4EgKfi6nH4PJdX6KUWTB92Grw9UB95/aASthdqtz4IBECnj5v ODPC+MeZI4WmOnxms8HjriNlCubAcgff90bWP+lZAYF3x7ujSJOuDbFJX30BQCXFlrtp EKlR9DvXuGeJG3tPjI3IXsdV8i0WqD5ppSaPiB57hCFQzVxw11R9Xkb91bxJxvhHKBd3 BTaoo9XkuemNerpvvzlysaDf2lBSiuDLgIJXvrS1F/RAFYN2hYwd3bmsbaXGWP2xu1fl zjsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728936555; x=1729541355; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r0zqaAbHeI1jkohxhnn3/eoqtBWz6fWnFImTtGcQALM=; b=Zm+jRVlt0T6jqS3sd6dpT8oxU7Y1NWxMvBWnqBOTO5zYiQkeCZ11zRrV01Y7aJdb8C Qt36Tsj8hu8Jx/ph0YSUqyJtQ4JOZEaqn46Ls0DrGwZR5kcfaXwmWchu6z6LOOCT2YTa bVRKwfaKYm3iqY9qi+e5ykGg9eNd+FpOQ1r+XPu5J6XzX1/GSI9BQ5GqZBlW+Lwy59J7 DrV/lC0qrBf9sGDzub07mM0rW0LAL0V1RPzhiwlMWyeKeK6MKvd5k4wdn6D8W26ndvOL y6PLb7xWnQcHX6xVZumyJNPBLEfaPqifb59/Ksl/CAFxYA7HtSfNafy6H10TWOxJlKRP Aiug== X-Forwarded-Encrypted: i=1; AJvYcCXqYIrDRC71ryNX9xr/Tn4N5ZC3/wwm5aqQfZj04CDzcewQh3KJGNXMRmaCvag0857jNrTEDzwhxA==@kvack.org X-Gm-Message-State: AOJu0YxQxBEMnOqiaYixCY2j9kuYkxbWTl+RecW4iWsba/BC+OWZTBRA s9YBb6ynx/pDaDpfFTUF0OgD7XdXE3fqUHu/XYUQFtrh7b6pkpytk4jIIVX/SIBa1SnaNizHwBV Vm3FU8paQQy2ANbhidTfuE3Wqr4b0rEAjQ2/V X-Google-Smtp-Source: AGHT+IFe+18jaYfQr+21B0WFTGQIwcQex+WsgK+bAeIFw8v1CVPL3tiWr1CxsaBhl5XE5hKvMkCXjZhdZbiCyhqn9EA= X-Received: by 2002:a05:6402:3495:b0:5c4:2e9f:4cfc with SMTP id 4fb4d7f45d1cf-5c95b38b9a3mr532129a12.6.1728936554221; Mon, 14 Oct 2024 13:09:14 -0700 (PDT) MIME-Version: 1.0 References: <20240903232241.43995-1-anthony.yznaga@oracle.com> <20240903232241.43995-6-anthony.yznaga@oracle.com> In-Reply-To: <20240903232241.43995-6-anthony.yznaga@oracle.com> From: Jann Horn Date: Mon, 14 Oct 2024 22:08:38 +0200 Message-ID: Subject: Re: [RFC PATCH v3 05/10] mm/mshare: Add ioctl support To: Anthony Yznaga Cc: akpm@linux-foundation.org, willy@infradead.org, markhemm@googlemail.com, viro@zeniv.linux.org.uk, david@redhat.com, khalid@kernel.org, andreyknvl@gmail.com, dave.hansen@intel.com, luto@kernel.org, brauner@kernel.org, arnd@arndb.de, ebiederm@xmission.com, catalin.marinas@arm.com, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhiramat@kernel.org, rostedt@goodmis.org, vasily.averin@linux.dev, xhao@linux.alibaba.com, pcc@google.com, neilb@suse.de, maz@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: D312540007 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: qgij4u4qeo7hnjh663j71tkb7de5s7yj X-HE-Tag: 1728936552-442710 X-HE-Meta: U2FsdGVkX18VupQfhj2DKoK1CzFz96YG1KzSZDT4FEVyLFkqevwRIShdzzy8ZjI8opKzuGDVHdBMselOepgBtSRu3HUINrUS2qIwm3przDBDfd0zeN0HaRtLN+sazPFKPFlXr1GOJ9tLIEriVlFgzQInLdE3ufGEv6QLmPbBGpL1CsBkCDF+nF6hHRuZkZimLFmtvOolGx1HO1sH++vJwC8W70KdHfqVk6ToF+vyDLZJ2O7+WzoL/v28QvI8xvNKlBBV4OpV7k9GU9RyzzNQQHhJZXllLyrG1B6aUN8EoKWVIQp6R8LaIqC7qwTsiT604gQFc5JOzxnN/oUcBLNv+FIm70+ZSv5GbeRrMgsPBIoZ3FGWptJ4UC+Ui/3X4MxEmL2mw2j0hyNKk5gMM1DfryYXgH0JTR8KC40X+ZcmGMApUeqRCnmc83lT63+Qaq5dRnV7QIAynypFR+TXUzDQTjqJMByrNmbp/dgvHxKZ1jtrcF7MSyfXn8NOvCKvfrfyrl3I9Gl9fDtshTXpHDE9PP6qLCpgcxBtxJZgmMlj6cMrzPIFe6zpajHZsa53uVukuahU9xewP35TUWJxwItA2hh3CjE/zMLqWEprpu5CqZMYVJ9opgey0Wh3zUSDrF5p1z31U+Dbe0SQ/bGSqs8qHIvBTFmBZvivwHFkOL32nqpFQDfEgLRD7bgvM76rGTnNT7Td+8mwauRBxI0lf1SRMGI+V+ij6pYB2ZpPoTSZ7irZV00I8dE89NBEabFxFF8bCNohU6NASbf78iRw2PwsOiPb2VAxhjP8fo/gBas0pEX5wtijcnH4Oq6lNY8d8Fcf13xLFjD6Zn5dhRNbwMZF7Qt6incGfq1O7hgYl9ZexF6CxCJ/8Qqwxfj909ecgelW/w+cgb6m2qkMYdfOYEawAU3Bi/qtMqic4pAzuuwpHcfAE0jwLCVAUo8rha3OZunMKI8nUWDapazLNwzsRys BI2K8aTD sW1R9qbwpxgvCaz/H8+wX+9+6p+BewdimebrLsXGeNSn7sIrXx0oxx1ILIO8re2tekO+UwLwc40U6uAXrWugjjj6PjjVp+VfxbNEoK7gbkHz1NOsjrvrfH46Aq41HzLBxKD0dxf90m58n0VKurb/T5k7fdCxtHy/GHz9STs4kCxul9RMotDP6iIUiojKjg0GFzQu3ZeDxYYef0tpAkyIT/egB54cQnz59aLh5 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: List-Subscribe: List-Unsubscribe: On Wed, Sep 4, 2024 at 1:22=E2=80=AFAM Anthony Yznaga wrote: > Reserve a range of ioctls for msharefs and add the first two ioctls > to get and set the start address and size of an mshare region. [...] > +static long > +msharefs_set_size(struct mm_struct *mm, struct mshare_data *m_data, > + struct mshare_info *minfo) > +{ > + unsigned long end =3D minfo->start + minfo->size; > + > + /* > + * Validate alignment for start address, and size > + */ > + if ((minfo->start | end) & (PGDIR_SIZE - 1)) { > + spin_unlock(&m_data->m_lock); > + return -EINVAL; > + } > + > + mm->mmap_base =3D minfo->start; > + mm->task_size =3D minfo->size; > + if (!mm->task_size) > + mm->task_size--; > + > + m_data->minfo.start =3D mm->mmap_base; > + m_data->minfo.size =3D mm->task_size; > + spin_unlock(&m_data->m_lock); > + > + return 0; > +} > + > +static long > +msharefs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > +{ > + struct mshare_data *m_data =3D filp->private_data; > + struct mm_struct *mm =3D m_data->mm; > + struct mshare_info minfo; > + > + switch (cmd) { > + case MSHAREFS_GET_SIZE: > + spin_lock(&m_data->m_lock); > + minfo =3D m_data->minfo; > + spin_unlock(&m_data->m_lock); > + > + if (copy_to_user((void __user *)arg, &minfo, sizeof(minfo= ))) > + return -EFAULT; > + > + return 0; > + > + case MSHAREFS_SET_SIZE: > + if (copy_from_user(&minfo, (struct mshare_info __user *)a= rg, > + sizeof(minfo))) > + return -EFAULT; > + > + /* > + * If this mshare region has been set up once already, ba= il out > + */ > + spin_lock(&m_data->m_lock); > + if (m_data->minfo.start !=3D 0) { Is there actually anything that prevents msharefs_set_size() from setting up m_data with ->minfo.start=3D=3D0, so that a second MSHAREFS_SET_SIZE invocation will succeed? It would probably be more reliable to have a separate flag for "has this thing been set up yet". > + spin_unlock(&m_data->m_lock); > + return -EINVAL; > + } > + > + return msharefs_set_size(mm, m_data, &minfo); > + > + default: > + return -ENOTTY; > + } > +}