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 7DFB2C5AD49 for ; Sun, 8 Jun 2025 16:36:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E5A366B008A; Sun, 8 Jun 2025 12:36:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E30B86B008C; Sun, 8 Jun 2025 12:36:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D479A6B0092; Sun, 8 Jun 2025 12:36:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B50A76B008A for ; Sun, 8 Jun 2025 12:36:00 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3545EBFCB8 for ; Sun, 8 Jun 2025 16:35:59 +0000 (UTC) X-FDA: 83532785238.28.6055322 Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) by imf23.hostedemail.com (Postfix) with ESMTP id 5D7A814000A for ; Sun, 8 Jun 2025 16:35:57 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=soleen-com.20230601.gappssmtp.com header.s=20230601 header.b=LKQEJWRq; spf=pass (imf23.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.160.177 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com; dmarc=pass (policy=none) header.from=soleen.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749400557; 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=hn9Sb4IlvfXIFtJ8XIXM20qiAkkg1B8bbJW0HdlNMEk=; b=5xRKsmJnW7KCdH7VZXrbySL0CCQfKmgyjpZV1uSS73cKKQ43Y/6FfF6DOWkkfPIkDxM35o 6FCJ+JCalhuw92pGNrIRzGs6cdmkcLexfFYOulNcToIlsS0CwQJxZVV/k1Appa38vFiDxq DnDYRyrKgXi3noglNanuipBA+K9X0to= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=soleen-com.20230601.gappssmtp.com header.s=20230601 header.b=LKQEJWRq; spf=pass (imf23.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.160.177 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com; dmarc=pass (policy=none) header.from=soleen.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749400557; a=rsa-sha256; cv=none; b=hzXy9mc2SpJxF1b4B8ebANARR4NjkePURFRGKDXPujaCQwFJeg69Mq7Z32WG0k68vAeNnZ JHkoNS/KUBctXVLr6ez24/elx/opn5RbEKDbBAHgC5wVixGR1qRU6l1YTMEjHwd6v4C+Cb wz+bV3w/hQvk0mKHLOkOEi72O2xQHCg= Received: by mail-qt1-f177.google.com with SMTP id d75a77b69052e-4a44b9b2af8so21617971cf.3 for ; Sun, 08 Jun 2025 09:35:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen-com.20230601.gappssmtp.com; s=20230601; t=1749400556; x=1750005356; 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=hn9Sb4IlvfXIFtJ8XIXM20qiAkkg1B8bbJW0HdlNMEk=; b=LKQEJWRqcd9Sw1qWrGrok1ufQxD7XuZ2/dYWx87sk27c99xDUDUcn3yKZO7Kst8KwE gBKtfYPJb4A2QpiwMlAASLPZ+/se4i5JjfneR67arVFPzyT9ztI9Vq5FAMorDydA66lb hTjCj1bsw/ktjKD1iebPgKid1GsjfoW0UqPiJa/nBWL56X/lTbrCDLJOCmbPqkgk+p2S HZokBOIMIBnTubYDJ8pKlnHHEKTqE0UO5dVEqzSV/AZyr/Z1mP4me9NVgiWq3lv7ylNN zId/b9x9arkHfo7hq2Haci3wGKbwQYdy25rcSFNote4nZC5Sne0W4z8rsKjnqjtS2TZH cRJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749400556; x=1750005356; 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=hn9Sb4IlvfXIFtJ8XIXM20qiAkkg1B8bbJW0HdlNMEk=; b=NQqo3csoO7i/TbCUAOjpbaNqsnWWCtP4/Rntt9x9HaD654nn5fhPKBJbvX0Ml8Zkfo tJMGjnjST3AP1hDXrnZlEZNJySZHoZKqrO6WZBe1zcTBVggdRGGHjKBbb5PGrUu5WFxg IOtsQBEp3/Y9AYQU+YooaSDBijCKauD0mYz6VPQ6avtQ+YfiQ4UoZDhMmdpJ0PERrZSs 2l27PgffKASJg+5UMkBot20xx7xEr5cZqv94wtuc7lkZY18iGj5R+SjYllqDFYzDP0kB PsU2z8oijYK+S4MaaWzHpF9jpLj5QQqudoMNhU6tdmUarWkJoPr66Ft6v3JjZpmMeJCH VhPA== X-Forwarded-Encrypted: i=1; AJvYcCXb4HASIS1Yw1/ZkKpmEpCKHw0KDwAoDTt4Y4Jv04zG40S5LIWUmo9QYshYKQUObj28SoFwwekFzQ==@kvack.org X-Gm-Message-State: AOJu0Yw75aJe2nwh2lhVgC+p3LkJkSewWtySLrD9iOX7AS2Wv6/diW3M Rby24/nAzC7yklGBSZ2NNW8KJ6wIBmneCZtkSCeJNcwwWXs3xas83p9kIa0Tu5P+ylySN2utJOS JfhQfxptGcDbFCf9MNODyYIdTb6m+FIw0ziRCuoJ16Q== X-Gm-Gg: ASbGncu6uwu9UogCHv3PDxuG4hh5Z+6UmkhvAkA+7YZAhfBxdOXmuVgxSRJgMu4ryJp T24m7LBq8AkbJdryfk2s6m9pxjS5naIG5V9U+nS0UCEb/zNzq0atpji1yC6tLWcxi/6KEbSvfX/ v51kgI+ZbeZpqNivgo/lmyhAM+2P2jdNiFh0eYp3ie X-Google-Smtp-Source: AGHT+IFqe9ejTPlAsTaPj7L7N+1gJedHDl31WYCkzxJQefBFZZ1c4isRvgInmAri9CFv7dkQjmquxrP4qLVUvalWYQ4= X-Received: by 2002:a05:622a:590c:b0:4a4:34ed:b64c with SMTP id d75a77b69052e-4a5b9dab813mr183961441cf.45.1749400556526; Sun, 08 Jun 2025 09:35:56 -0700 (PDT) MIME-Version: 1.0 References: <20250515182322.117840-1-pasha.tatashin@soleen.com> <20250515182322.117840-11-pasha.tatashin@soleen.com> In-Reply-To: From: Pasha Tatashin Date: Sun, 8 Jun 2025 12:35:19 -0400 X-Gm-Features: AX0GCFteXcRxC3-vZZL_aqHL2ebAE0Lr6ln_w6d3VAVqndZjIpLQe59BlkOtgJc Message-ID: Subject: Re: [RFC v2 10/16] luo: luo_ioctl: add ioctl interface To: Pratyush Yadav Cc: jasonmiu@google.com, graf@amazon.com, changyuanl@google.com, rppt@kernel.org, dmatlack@google.com, rientjes@google.com, corbet@lwn.net, rdunlap@infradead.org, ilpo.jarvinen@linux.intel.com, kanie@linux.alibaba.com, ojeda@kernel.org, aliceryhl@google.com, masahiroy@kernel.org, akpm@linux-foundation.org, tj@kernel.org, yoann.congal@smile.fr, mmaurer@google.com, roman.gushchin@linux.dev, chenridong@huawei.com, axboe@kernel.dk, mark.rutland@arm.com, jannh@google.com, vincent.guittot@linaro.org, hannes@cmpxchg.org, dan.j.williams@intel.com, david@redhat.com, joel.granados@kernel.org, rostedt@goodmis.org, anna.schumaker@oracle.com, song@kernel.org, zhangguopeng@kylinos.cn, linux@weissschuh.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, gregkh@linuxfoundation.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, rafael@kernel.org, dakr@kernel.org, bartosz.golaszewski@linaro.org, cw00.choi@samsung.com, myungjoo.ham@samsung.com, yesanishhere@gmail.com, Jonathan.Cameron@huawei.com, quic_zijuhu@quicinc.com, aleksander.lobakin@intel.com, ira.weiny@intel.com, andriy.shevchenko@linux.intel.com, leon@kernel.org, lukas@wunner.de, bhelgaas@google.com, wagi@kernel.org, djeffery@redhat.com, stuart.w.hayes@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 5D7A814000A X-Stat-Signature: qhf8nk9egiiac1s5wmzb6338t1pzy34a X-Rspam-User: X-HE-Tag: 1749400557-268700 X-HE-Meta: U2FsdGVkX1+frh0ZVDwjeyxxNGApffN5sSfbvxepBbS1Uw+TIpHJ3Ox4Wm+m2dmV3NYXTdInkYboV57Xdljg4PEzHYvpR9bIpgjKzAOiJxCPDyzhvZch5vaBjPdI7n4nfhDawb25+fYPEgHk6o6fCPkTfCbR0PMuYpLbaz34yz1HK0gsKY5KrreB1fdWLR2F/8zCrPgf57SG5W4dCjJAoXecKlPIG7ftOSEuQHpu2OWUJ+geD325QzV1ihI3V3EN5ZQSCeqzg0iv4ufqBKU9ug1cVbjW+Lr9LSnn3Rti+jmU017IJR3Gxl4IiTsWCQx2lw4oPF5eBEP72jfTivmNFKGblIQ13zMNjwMpvsTIkI1wqMgpWHBBy+eW7VPpLRfvSFQzHGGfLSPGtqrGP9jsFgfKU9iTnqtKeepSQ/5lFNfkFIGCWX39O8aICY4VbBb/8mvTWKRzGjpYhBvMOT4XTrdQXS3w9LXTeFApPlFNgkC007l1m1CmRW5E1z9QJZSj+B9bJSHfjQmXXldOtA7XbtZwvX5X9/WI57sEsLUffkYfJEKLUOcjMXoQGXgvGxoevTbAQD43VkkxOEHzlgLenY2pr/nNtqlqLiDrY+PRYMwzgi5oPwTN8RMKe0n0bgpVrwExt81ksnnMvysNfoIfVNfogFWZ4ragsW8yEeb/7gjEtcibOskaVvTuIMZxbO8fPuYbZ8Z71T5oNl/+jeM9qHDsQg7DUxU0sZICNbkuaJjWDTqSoLABs+IYjPPWg1t0B4yzAMV+t7GWltewXUWO7AG0uWb/z/GdEChmKoqhcTnshr5WsHHtt5s47wfTSf0hftSdqKx//Z3uTSpZA0DOsZpY1mzQyrQbivMcM2eU8cXaW8eQEUvl7i5ubtRBOIaKV7/7cF3tpJnTzbRbmGE5t/YKoGPhvUhBkVfbn6PL/gwnB+aXiULUDRCv51B9H+z0ZkaZ3loGy8vF/MMQaED iMQek3XP ayIF9TaoN6M+0JjPsncuE3J9reFBmW2npcA7a6nJOIdZWL2L1ZSlXwghSuJW53HamfsUFWhDiJEworj3TdYION3BSXY7SLD/5SSHj51GFeo54GR41dVc26KdMbJNDB5T4D2wtIGiJJGwfysh5jaSP1NFM8AldG7ftFQlZqoYhavI51/SA518lqjFb6RkKAGfanK8PPwVluaAXI0gBxjz+fWwSPRFU1zIZ1TnTDZTgkhC8/VfYrwDFvaMK9VysuF9Z2WtUJV07cohgXrN1PsK51K1tzxcv9u1R5mx/+3/r8m+XSbFZ/Ym6za+vtat0YIpUfR7qkYk8VygV0GpdjAIl2tGCCQcpZi7kr0e0+2QGq1UoV9pVjaYr3b6qIxZLHgmodDY5j/jdNXB/0fVpeOcHpaEcHUbrtq9EPBZy7OQUNXHzG2nDSxiy6EJYxiNPpM2CMl2I136VQT/CQPk= 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 Thu, Jun 5, 2025 at 12:16=E2=80=AFPM Pratyush Yadav wrote: > > On Thu, May 15 2025, Pasha Tatashin wrote: > > > Introduce the user-space interface for the Live Update Orchestrator > > via ioctl commands, enabling external control over the live update > > process and management of preserved resources. > > > > Create a misc character device at /dev/liveupdate. Access > > to this device requires the CAP_SYS_ADMIN capability. > > > > A new UAPI header, , defines the necessary > > structures. The magic number is registered in > > Documentation/userspace-api/ioctl/ioctl-number.rst. > > > > Signed-off-by: Pasha Tatashin > > --- > [...] > > +static int luo_ioctl_fd_preserve(struct liveupdate_fd *luo_fd) > > +{ > > + struct file *file; > > + int ret; > > + > > + file =3D fget(luo_fd->fd); > > + if (!file) { > > + pr_err("Bad file descriptor\n"); > > + return -EBADF; > > + } > > + > > + ret =3D luo_register_file(&luo_fd->token, file); > > + if (ret) > > + fput(file); > > + > > + return ret; > > +} > > + > > +static int luo_ioctl_fd_unpreserve(u64 token) > > +{ > > This leaks the refcount on the file that preserve took. Perhaps > luo_unregister_file() should return the file it unregistered, so this > can do fput(file)? Thank you, David Matlack also noticed this leak, I fixed it. > > > + return luo_unregister_file(token); > > +} > > + > > +static int luo_ioctl_fd_restore(struct liveupdate_fd *luo_fd) > > +{ > > + struct file *file; > > + int ret; > > + int fd; > > + > > + fd =3D get_unused_fd_flags(O_CLOEXEC); > > + if (fd < 0) { > > + pr_err("Failed to allocate new fd: %d\n", fd); > > + return fd; > > + } > > + > > + ret =3D luo_retrieve_file(luo_fd->token, &file); > > + if (ret < 0) { > > + put_unused_fd(fd); > > + > > + return ret; > > + } > > + > > + fd_install(fd, file); > > + luo_fd->fd =3D fd; > > + > > + return 0; > > +} > > + > > +static int luo_open(struct inode *inodep, struct file *filep) > > +{ > > + if (!capable(CAP_SYS_ADMIN)) > > + return -EACCES; > > + > > + if (filep->f_flags & O_EXCL) > > + return -EINVAL; > > + > > + return 0; > > +} > > + > > +static long luo_ioctl(struct file *filep, unsigned int cmd, unsigned l= ong arg) > > +{ > > + void __user *argp =3D (void __user *)arg; > > + struct liveupdate_fd luo_fd; > > + enum liveupdate_state state; > > + int ret =3D 0; > > + u64 token; > > + > > + if (_IOC_TYPE(cmd) !=3D LIVEUPDATE_IOCTL_TYPE) > > + return -ENOTTY; > > + > > + switch (cmd) { > > + case LIVEUPDATE_IOCTL_GET_STATE: > > + state =3D READ_ONCE(luo_state); > > + if (copy_to_user(argp, &state, sizeof(luo_state))) > > + ret =3D -EFAULT; > > + break; > > + > > + case LIVEUPDATE_IOCTL_EVENT_PREPARE: > > + ret =3D luo_prepare(); > > + break; > > + > > + case LIVEUPDATE_IOCTL_EVENT_FREEZE: > > + ret =3D luo_freeze(); > > + break; > > + > > + case LIVEUPDATE_IOCTL_EVENT_FINISH: > > + ret =3D luo_finish(); > > + break; > > + > > + case LIVEUPDATE_IOCTL_EVENT_CANCEL: > > + ret =3D luo_cancel(); > > + break; > > + > > + case LIVEUPDATE_IOCTL_FD_PRESERVE: > > + if (copy_from_user(&luo_fd, argp, sizeof(luo_fd))) { > > + ret =3D -EFAULT; > > + break; > > + } > > + > > + ret =3D luo_ioctl_fd_preserve(&luo_fd); > > + if (!ret && copy_to_user(argp, &luo_fd, sizeof(luo_fd))) > > + ret =3D -EFAULT; > > luo_unregister_file() is needed here on error. > Done, thank you. Pasha