From nobody Sun Feb 8 04:30:14 2026 Received: from mail-pl1-f226.google.com (mail-pl1-f226.google.com [209.85.214.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 874A8275B1A for ; Fri, 30 Jan 2026 17:14:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; cv=none; b=Sg4ZuCQfQKXyGaH95lrsV/cNWMyK+OvhVFXZvU5ALCh0RayalPoagiKjhxZvyI1lcyFEiZxr5nc7l0wtrKXRnkIX035AahKFAXWHTZxJaMtsZpiJ4obaUxrKUJ2sxwyMJXZXkdhayNIK+lCkvfCNDffIFPa44vGimGj6I1njFtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; c=relaxed/simple; bh=wCkT+0Fo7ip1VAXveKM+pIVE+TBXQ2MYyUCKXghWGUQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hR2r4XOj11bPqxCHfsKq6U9FfKEQ5c7NNt0+XbICyNLcFlyaQZJlhNaVG+bdPNLSD3JBaNn+2UaQytmF9ByvbUtLXluywFp6yWQ7E/9I0NOf05ZIIfQCrMn8coDvgORQbBQZs6fvAcz7NQBArRYR5cL+hMawtX8AiPjEYm6tYg4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=d0IE/pIA; arc=none smtp.client-ip=209.85.214.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="d0IE/pIA" Received: by mail-pl1-f226.google.com with SMTP id d9443c01a7336-2a7a9e4bcc2so947575ad.2 for ; Fri, 30 Jan 2026 09:14:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1769793271; x=1770398071; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8pYvyvztBv1OPHWCa1BTrjMg7Bnkkyf2mkorsSdzRqM=; b=d0IE/pIA7Bkt9TI8aV6P4pbUhC9xy0MzHVQSH+kaY/cPj8PjP/hj8rlEdm8OTSTkmy cAkTq+4aSLTwePCjIteUozWQZQSE9MQAZIu+zcOmUj2MZxGI0eX7MzVdpJoFcl5HsBOh Zz9JaczA0L2rmb1eFqb0fU3IQkre13+Aqen0V3ubULFZRVhrTpcnwIHN8eORVyBVv2xU mm2MWkbPMP7ieI6pTmmdhEUNxUfJy0OPX9RVp0Ofv/I2axax/1Na4WkApIrN1Hq4v7jq 1eRqWrz9YspFPuNGhQMkr8NNGKIqNXTVJpBwc+4o4ov8h65lWy5k+f1YERN7YkH9aZsj ApOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769793271; x=1770398071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8pYvyvztBv1OPHWCa1BTrjMg7Bnkkyf2mkorsSdzRqM=; b=McAFstk7powxBxAKhz1lfhG+aqlj/4pamBilzBMLqzeytA2Z4cmvtmPBuk0JLJZ2hE vAxOTLQPVaQura7Jpb03UHiBemJuTey6D9GdQSLBo8zixCm4Q9aIrgF+m0smKFfimPHC B3S9ta8fgzrGA3YuH7e75ihHA8MyikjMcxci1pC/G8bchPVF+nXv+pKTaouqEkQgGkTU RunB/yvIXxOGVe1AuMVn8EOQzB6ZWukKSGwmI2cJ2deq5k2poTnuB8NJvK5PfCqAQcza CaRUs8TQIfExRnxbiFraEnc+lm0Nelh5eFWAOwI3aT5BEgocRNu5Py9sOV0zwhVBD5n8 maFA== X-Forwarded-Encrypted: i=1; AJvYcCVhyJksGPKT1weFxDZfnrJZqfdZ1+LgVNhIaSJ2DVtdGRmUWBF+yROIAvajEMlP+TnsAew0ZdXywPv3Rl4=@vger.kernel.org X-Gm-Message-State: AOJu0YzSEMDc0cNfogCZatBDuuA8bZMkZhpY416xzITEygBfJBDR/AZN 4KrXVRxTraW3L9P/2gpZDl/pX5F9wxdJQwIas16pXQ5+v7z+Hxpx60zneSHI9aj66bb3P7gFXOe yJXjUxkUAVASRcRvwUA/OLzkQZsHyVDWDO0K6Qk1kHCs5xq+LwZt9 X-Gm-Gg: AZuq6aIPjSDkL4Rz3G6tYABuW0JxQ9Fp98w2xSGN06NnFKtyXwhWENGTjdAOAP5GlfF m3DAHGXtaUGh5kO+UJbsiqWyTDXOhNTsF9QWIK7yMAEmsk3hmTIXb/NTm6fZCraN6awrA/iY69K LAPUawaDVJFojPy9mZ475pMmJ7M4+e/gH7Jl6gEhUI0Ve9DjMwCjcNorvqr/QRSqC1dxmbZyrPw R1GZ9mz8C9E++p+9IRMuJUXp9oeCH3YLnEa0tfvYFbI5wUjJKRlz6sP7BwnIZKC1g/fdt9q1Hjb rqMIpPZcgf0EmBh9hJGOHeDEOgFJuURDkpnBG871xqcMQdAf+k8raJo4OqvFeYKdDPL/lgfdOsU fNU+4J7WQzdi2URnT+YK7v4UAPWk= X-Received: by 2002:a17:903:2c07:b0:2a7:87c0:d1d7 with SMTP id d9443c01a7336-2a8d9a7f66emr27658905ad.9.1769793270768; Fri, 30 Jan 2026 09:14:30 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2a88b3eeec9sm11140785ad.12.2026.01.30.09.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jan 2026 09:14:30 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.29.101]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id D75B634058D; Fri, 30 Jan 2026 10:14:29 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id D18B7E40249; Fri, 30 Jan 2026 10:14:29 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Govindarajulu Varadarajan , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 1/3] ublk: Validate SQE128 flag before accessing the cmd Date: Fri, 30 Jan 2026 10:14:12 -0700 Message-ID: <20260130171414.1376543-2-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20260130171414.1376543-1-csander@purestorage.com> References: <20260130171414.1376543-1-csander@purestorage.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Govindarajulu Varadarajan ublk_ctrl_cmd_dump() accesses (header *)sqe->cmd before IO_URING_F_SQE128 flag check. This could cause out of boundary memory access. Move the SQE128 flag check earlier in ublk_ctrl_uring_cmd() to return -EINVAL immediately if the flag is not set. Fixes: 71f28f3136af ("ublk_drv: add io_uring based userspace block driver") Signed-off-by: Govindarajulu Varadarajan Reviewed-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 5efaf53261ce..01088194c8d3 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -5219,14 +5219,14 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd = *cmd, =20 if (ublk_ctrl_uring_cmd_may_sleep(cmd_op) && issue_flags & IO_URING_F_NONBLOCK) return -EAGAIN; =20 - ublk_ctrl_cmd_dump(cmd); - if (!(issue_flags & IO_URING_F_SQE128)) - goto out; + return -EINVAL; + + ublk_ctrl_cmd_dump(cmd); =20 ret =3D ublk_check_cmd_op(cmd_op); if (ret) goto out; =20 --=20 2.45.2 From nobody Sun Feb 8 04:30:14 2026 Received: from mail-pl1-f227.google.com (mail-pl1-f227.google.com [209.85.214.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2F4C1DDC28 for ; Fri, 30 Jan 2026 17:14:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; cv=none; b=LucVridzR+eWR6u6G8SXsfITbgF1KefTDt0SgMx91wwmEsF2YY72e+dK4BIpxMkO9phPSVB2JDb+ZB44LbhiqGyDQXfdUKfeLIhZT3nP4yTs0y58Y25W36K8DvX7jRc/aA90PoIJGSshDAFUPL2VKBYsEA2VwkCYS8AJpsmPB+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; c=relaxed/simple; bh=0cZw4WoTg3BdK7j57W9095lLp2dvzuFS4CxIHf8f6HU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=r1owytop1mSaJyzIv3W68cKUdg6LoSEr+raJFvD98Bo8u0+WIkK12+tPyomdNu0rUaS6fQRKh2rbQ+BXX+r9qbUtVdtWCHhICZkDrd8zDe6JyPmiUb8U84GTAmhSefNcjNh9VuV4XPNQ8e18vAhvlQHmtsxmtFU3Whayl/ShJ7E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=X5KK5dei; arc=none smtp.client-ip=209.85.214.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="X5KK5dei" Received: by mail-pl1-f227.google.com with SMTP id d9443c01a7336-2a8720818aeso942645ad.1 for ; Fri, 30 Jan 2026 09:14:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1769793271; x=1770398071; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qzKEcCAgobrhhmQRZuiW3ilTQpyqp+GPnanCxT2FyvI=; b=X5KK5deiJW7bRr4YflAN7LlnrKIMu7MwAbRmOywk2JfwXJCwQE+IFpSI2m5j1dsu6y 1hjdUSrW18xtefzWN7aHuqjZIxqCBIwQMnjR06j2jat85BVcjet5KMoGgELQubhOMYFP hCTjZXKthN0qJcij+wRNt68LfYbjmqyqxcBXNvKLE857E2vidPSlCc6vOQ7oqHY6k1dN OnglobwGbdgRhHRkL9myp/7IWqgWgo5aqfwQaYM2Oh5osC0k4w+AoMQpawvBFWJFqaC7 2RzBqt+txLDLLPzTNJBaNC5wgllMmjoQyKIRG5Bcv39rR2/YLnXNQpUKAK7PUFVXOMy9 q6yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769793271; x=1770398071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qzKEcCAgobrhhmQRZuiW3ilTQpyqp+GPnanCxT2FyvI=; b=GPE6GhhnBO62djMrwwcfzfQQWPi8AHtQeGRn2OVVURI7ZbSQdqJpGq03HR6JjZEr59 +gRFe078gWz2vsZ7YSFKW1h6yyVF01hoi3G7gdXAyMQmLKJeFBis4NkUkQK5lzw+O6FM nsagOiIJX/1GDP06M53WOa48Y2aPLHOtd0b35yWpsonhTKC5i8Y+qVyIWZVSu+yNogQL +kEfnTiuQEHv026Mq8KL61weHP9dp4UqUdWtEffGQg1yNlHtnRaCXEzJe83PzNgRMesZ /XxvFQa2HpZZmzBEODJuWOJUB2qW38wYc5n+qCmxH3H9GiLnzx9hgm1x82F0TCAS9iFE N2Zg== X-Forwarded-Encrypted: i=1; AJvYcCX3I4d0ZnZ4rDjVvZUSBw6lucl2+VKh4r+wI3MTZsf9YGy08rT3ae2MVeTKfvxkK85fr47jnJCj/Op3eQ4=@vger.kernel.org X-Gm-Message-State: AOJu0YwnISrY4Hcn2Xb6ceN4tbsarym90jqxe4hNh6fAYE+gu0R9xaDI tYYFcQOPLH3uzytvNYV8wVrI0iL7SV09g3aGOaRW0IouvgMZUU+hc2mZ/N6Bcuy+eHIwDFcASOQ KjDgsrBcX2TazpL7EbE+dN4dYup23LyJzIUIP X-Gm-Gg: AZuq6aL5SJaMI1WwWhw8Q/U8CiU548xNjT/6r6RvFyyBM8XznAGN3+1WtNJbFko1lvJ DlmysVhUsVlgquALLIua/g+gJPRwVWP+b0rNVq0eGHBqQlGYz5PSd5GKsYIM5r3QqAOtL1vXWz7 P+dZ5ZY7m9cPICaRw1auEXvd7JOXqnR3t3VwMeLPH/xv74/Et68/NllQSTr6gtOoQyanHD69fer 0dfwcjAfZRc8SKT2r5ScErQkRGi1tqtJLh2FqzOjBgjMAkmSRH4K98d0OkZ+yg834L2JOOMFjLD 5VdyomF4/ncS6S7GB5RDD4GJUvAJa99708rcRRkKuztTevHDlR+fMNRgRI4JS+NlWWPV4DD2rtK geprY7o5NymRZaZwK4PMpAGPV3buWB0bi6n9DNKfM9g== X-Received: by 2002:a17:902:e003:b0:2a0:ccee:b356 with SMTP id d9443c01a7336-2a8d958e55dmr19048675ad.1.1769793270921; Fri, 30 Jan 2026 09:14:30 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2a88b7f86c3sm10838705ad.53.2026.01.30.09.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jan 2026 09:14:30 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.29.101]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 1856B340603; Fri, 30 Jan 2026 10:14:30 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 13438E40249; Fri, 30 Jan 2026 10:14:30 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Govindarajulu Varadarajan , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 2/3] ublk: use READ_ONCE() to read struct ublksrv_ctrl_cmd Date: Fri, 30 Jan 2026 10:14:13 -0700 Message-ID: <20260130171414.1376543-3-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20260130171414.1376543-1-csander@purestorage.com> References: <20260130171414.1376543-1-csander@purestorage.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" struct ublksrv_ctrl_cmd is part of the io_uring_sqe, which may lie in userspace-mapped memory. It's racy to access its fields with normal loads, as userspace may write to them concurrently. Use READ_ONCE() to copy the ublksrv_ctrl_cmd from the io_uring_sqe to the stack. Use the local copy in place of the one in the io_uring_sqe. Fixes: 87213b0d847c ("ublk: allow non-blocking ctrl cmds in IO_URING_F_NONB= LOCK issue") Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 56 ++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 01088194c8d3..8122b012a7ae 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -4729,16 +4729,15 @@ static int ublk_ctrl_del_dev(struct ublk_device **p= _ub, bool wait) if (wait && wait_event_interruptible(ublk_idr_wq, ublk_idr_freed(idx))) return -EINTR; return 0; } =20 -static inline void ublk_ctrl_cmd_dump(struct io_uring_cmd *cmd) +static inline void ublk_ctrl_cmd_dump(u32 cmd_op, + const struct ublksrv_ctrl_cmd *header) { - const struct ublksrv_ctrl_cmd *header =3D io_uring_sqe_cmd(cmd->sqe); - pr_devel("%s: cmd_op %x, dev id %d qid %d data %llx buf %llx len %u\n", - __func__, cmd->cmd_op, header->dev_id, header->queue_id, + __func__, cmd_op, header->dev_id, header->queue_id, header->data[0], header->addr, header->len); } =20 static void ublk_ctrl_stop_dev(struct ublk_device *ub) { @@ -5117,13 +5116,12 @@ static int ublk_char_dev_permission(struct ublk_dev= ice *ub, path_put(&path); return err; } =20 static int ublk_ctrl_uring_cmd_permission(struct ublk_device *ub, - struct io_uring_cmd *cmd) + u32 cmd_op, struct ublksrv_ctrl_cmd *header) { - struct ublksrv_ctrl_cmd *header =3D (struct ublksrv_ctrl_cmd *)io_uring_s= qe_cmd(cmd->sqe); bool unprivileged =3D ub->dev_info.flags & UBLK_F_UNPRIVILEGED_DEV; void __user *argp =3D (void __user *)(unsigned long)header->addr; char *dev_path =3D NULL; int ret =3D 0; int mask; @@ -5135,11 +5133,11 @@ static int ublk_ctrl_uring_cmd_permission(struct ub= lk_device *ub, * The new added command of UBLK_CMD_GET_DEV_INFO2 includes * char_dev_path in payload too, since userspace may not * know if the specified device is created as unprivileged * mode. */ - if (_IOC_NR(cmd->cmd_op) !=3D UBLK_CMD_GET_DEV_INFO2) + if (_IOC_NR(cmd_op) !=3D UBLK_CMD_GET_DEV_INFO2) return 0; } =20 /* * User has to provide the char device path for unprivileged ublk @@ -5156,11 +5154,11 @@ static int ublk_ctrl_uring_cmd_permission(struct ub= lk_device *ub, dev_path =3D memdup_user_nul(argp, header->dev_path_len); if (IS_ERR(dev_path)) return PTR_ERR(dev_path); =20 ret =3D -EINVAL; - switch (_IOC_NR(cmd->cmd_op)) { + switch (_IOC_NR(cmd_op)) { case UBLK_CMD_GET_DEV_INFO: case UBLK_CMD_GET_DEV_INFO2: case UBLK_CMD_GET_QUEUE_AFFINITY: case UBLK_CMD_GET_PARAMS: case (_IOC_NR(UBLK_U_CMD_GET_FEATURES)): @@ -5186,11 +5184,11 @@ static int ublk_ctrl_uring_cmd_permission(struct ub= lk_device *ub, if (!ret) { header->len -=3D header->dev_path_len; header->addr +=3D header->dev_path_len; } pr_devel("%s: dev id %d cmd_op %x uid %d gid %d path %s ret %d\n", - __func__, ub->ub_number, cmd->cmd_op, + __func__, ub->ub_number, cmd_op, ub->dev_info.owner_uid, ub->dev_info.owner_gid, dev_path, ret); exit: kfree(dev_path); return ret; @@ -5210,11 +5208,13 @@ static bool ublk_ctrl_uring_cmd_may_sleep(u32 cmd_o= p) } =20 static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) { - const struct ublksrv_ctrl_cmd *header =3D io_uring_sqe_cmd(cmd->sqe); + /* May point to userspace-mapped memory */ + const struct ublksrv_ctrl_cmd *ub_src =3D io_uring_sqe_cmd(cmd->sqe); + struct ublksrv_ctrl_cmd header; struct ublk_device *ub =3D NULL; u32 cmd_op =3D cmd->cmd_op; int ret =3D -EINVAL; =20 if (ublk_ctrl_uring_cmd_may_sleep(cmd_op) && @@ -5222,74 +5222,80 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd = *cmd, return -EAGAIN; =20 if (!(issue_flags & IO_URING_F_SQE128)) return -EINVAL; =20 - ublk_ctrl_cmd_dump(cmd); + header.dev_id =3D READ_ONCE(ub_src->dev_id); + header.queue_id =3D READ_ONCE(ub_src->queue_id); + header.len =3D READ_ONCE(ub_src->len); + header.addr =3D READ_ONCE(ub_src->addr); + header.data[0] =3D READ_ONCE(ub_src->data[0]); + header.dev_path_len =3D READ_ONCE(ub_src->dev_path_len); + ublk_ctrl_cmd_dump(cmd_op, &header); =20 ret =3D ublk_check_cmd_op(cmd_op); if (ret) goto out; =20 if (cmd_op =3D=3D UBLK_U_CMD_GET_FEATURES) { - ret =3D ublk_ctrl_get_features(header); + ret =3D ublk_ctrl_get_features(&header); goto out; } =20 if (_IOC_NR(cmd_op) !=3D UBLK_CMD_ADD_DEV) { ret =3D -ENODEV; - ub =3D ublk_get_device_from_id(header->dev_id); + ub =3D ublk_get_device_from_id(header.dev_id); if (!ub) goto out; =20 - ret =3D ublk_ctrl_uring_cmd_permission(ub, cmd); + ret =3D ublk_ctrl_uring_cmd_permission(ub, cmd_op, &header); if (ret) goto put_dev; } =20 switch (_IOC_NR(cmd_op)) { case UBLK_CMD_START_DEV: - ret =3D ublk_ctrl_start_dev(ub, header); + ret =3D ublk_ctrl_start_dev(ub, &header); break; case UBLK_CMD_STOP_DEV: ublk_ctrl_stop_dev(ub); ret =3D 0; break; case UBLK_CMD_GET_DEV_INFO: case UBLK_CMD_GET_DEV_INFO2: - ret =3D ublk_ctrl_get_dev_info(ub, header); + ret =3D ublk_ctrl_get_dev_info(ub, &header); break; case UBLK_CMD_ADD_DEV: - ret =3D ublk_ctrl_add_dev(header); + ret =3D ublk_ctrl_add_dev(&header); break; case UBLK_CMD_DEL_DEV: ret =3D ublk_ctrl_del_dev(&ub, true); break; case UBLK_CMD_DEL_DEV_ASYNC: ret =3D ublk_ctrl_del_dev(&ub, false); break; case UBLK_CMD_GET_QUEUE_AFFINITY: - ret =3D ublk_ctrl_get_queue_affinity(ub, header); + ret =3D ublk_ctrl_get_queue_affinity(ub, &header); break; case UBLK_CMD_GET_PARAMS: - ret =3D ublk_ctrl_get_params(ub, header); + ret =3D ublk_ctrl_get_params(ub, &header); break; case UBLK_CMD_SET_PARAMS: - ret =3D ublk_ctrl_set_params(ub, header); + ret =3D ublk_ctrl_set_params(ub, &header); break; case UBLK_CMD_START_USER_RECOVERY: - ret =3D ublk_ctrl_start_recovery(ub, header); + ret =3D ublk_ctrl_start_recovery(ub, &header); break; case UBLK_CMD_END_USER_RECOVERY: - ret =3D ublk_ctrl_end_recovery(ub, header); + ret =3D ublk_ctrl_end_recovery(ub, &header); break; case UBLK_CMD_UPDATE_SIZE: - ublk_ctrl_set_size(ub, header); + ublk_ctrl_set_size(ub, &header); ret =3D 0; break; case UBLK_CMD_QUIESCE_DEV: - ret =3D ublk_ctrl_quiesce_dev(ub, header); + ret =3D ublk_ctrl_quiesce_dev(ub, &header); break; case UBLK_CMD_TRY_STOP_DEV: ret =3D ublk_ctrl_try_stop_dev(ub); break; default: @@ -5300,11 +5306,11 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd = *cmd, put_dev: if (ub) ublk_put_device(ub); out: pr_devel("%s: cmd done ret %d cmd_op %x, dev id %d qid %d\n", - __func__, ret, cmd->cmd_op, header->dev_id, header->queue_id); + __func__, ret, cmd_op, header.dev_id, header.queue_id); return ret; } =20 static const struct file_operations ublk_ctl_fops =3D { .open =3D nonseekable_open, --=20 2.45.2 From nobody Sun Feb 8 04:30:14 2026 Received: from mail-pj1-f99.google.com (mail-pj1-f99.google.com [209.85.216.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B52A2DEA64 for ; Fri, 30 Jan 2026 17:14:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; cv=none; b=J61+mNj3rIfPDlbO+Yi21bq77X7+OHTUJ2a92Am1amuc6W1q5Kk9VllIdh5qJBJVmJiu2no/H3mCo5gL510BmUSdgmwR5/zGESJwgTA9ZFlFb+N2BqeEJtbNZ0EVkmIMcrbA9yRraFuChfy16jiip2FxJtfL1ZQZDUhQQ7A004o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769793273; c=relaxed/simple; bh=uH26QxCWKhGjIjs7WgnjKQrwoovULgl956akyEOBsdA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UYVLTCjmIW9uxyOT7r/H7mfbaYwG8G0WNIguUfLBTFDhKFfp+HXyGAxsxfvHbTexOot8n5KcxOUSqKA4nRf5bBldqgA5E3nIn+XQhjdTC8LB10JfT8h7Bri7Zmn2ioXqQxBMkVbiDF0qvn9MeOviaPaDfzxrbYgmHikTd1v3+Is= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=H36yyUrg; arc=none smtp.client-ip=209.85.216.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="H36yyUrg" Received: by mail-pj1-f99.google.com with SMTP id 98e67ed59e1d1-34f634a01e1so35061a91.3 for ; Fri, 30 Jan 2026 09:14:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1769793271; x=1770398071; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gg1XU3B6cgpEe2psLflcWBiUZvtKlNIIXguQ1b/fEKw=; b=H36yyUrgWN5H0VCiZpwSIinJV5TX2r7VdFI2bRpyMHbG1wrOXRHVXwyIQsh6LmBeh9 yFSbS10+TteqoKenLr/60QnX/Hj5Z+il7/7PRTLZsHQO5xm4RxP9EONIRMPWa46/YHpX pdcUNA9hWMzStDi3atKUY85EKevkDIXrV2BpO1nslNtr8XqRfMB1bfuMl1El2i5hIiU9 Y8K0ih1atz+iAZ3K6Mph72F07SjK7Oo+42eA84weQbuBB8jzMVqW1aFORFnwEGmFcZpe qlh92zSVL2e3Grj6HcWO0i/idXAJJgCRBMV8xQENgct3J5f+ZadtAoodn2UK7xBw6Qai 03Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769793271; x=1770398071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=gg1XU3B6cgpEe2psLflcWBiUZvtKlNIIXguQ1b/fEKw=; b=nfjp0/zyPCPstaoepJ36FrjEymadKo0bIKeu4Zh0FhP9lzN87MOeCytOhMlr/33qAa WRQTXoSPaPgsVT71Iaq7UxT5Fu3RUseSLlF9v13Q8f232O9kYDIM8IKRj0EJ6ucypAab SCNRufuwZmXVDCqIRHYqCHfqtJwFPcHEtp9H13gTDmPQHnUjQY5o0zEDZ8lUQ8Vl5OKT Oc/05VJhOigqjeBD1lfyVrGRwFN+x7dt4yjQz2/1BkLsPWMKN2qHYk1uvnL8/JbhPuA8 AGMTFsJyMkmB4xuDFxSYfzRSVPEXNeD/zbU0Cdnf/CRU12pNXwsadfItGGF2Nri++jQp APZA== X-Forwarded-Encrypted: i=1; AJvYcCXIzndJ6/SupO/X0lIylk+cDvdfzRmu87z+nnBugnZjtjyQO6E8X1jHgaL7XXej7j6liJz7YSn/6N+RSxU=@vger.kernel.org X-Gm-Message-State: AOJu0YwZH4aAwel29qvVODwB0U7Frl/5qdQssxF36bYHt3OkNkjwYel5 FPSOy6GBS4DHRaIF+6KTPhEXC6nUlBB+xqjEVQF1QfnjyLJOk1IuqV9x6RHi0wEQSUOH06DCF8B 87QBrUWd4FMaqAzhsM3hfioMN54zTgFGwGPQI X-Gm-Gg: AZuq6aKyH9qRgr2c5IV8v0XdrI3jOHiax2Bglzr/e0cyps0U2kg/fVMtPh7MnFlKIpw vycYMYqODOFgbym2xFeG5dPhBk2xVKjOPSaTJlRDqyLGdaHKY9ZUqaqkKfY8+t1ALX+G0+RbScr sg0oNUwI9H6ERDVS5Fm6QaDIRqDt5wsEFogoPwE9Bft/xiIldv2u1p866js21zzp+c31K7yEcgs XkNjrWE7Jse9UbSSM3S7oJIhLSjrT5sWSsaivE/Dsj4GNge4ZYz6n8cD9tzXldZWWkjt7JoK0fy 5v/iNQdH4LADS4ra4AAkJRxQZT2oc2/+8kM+9oEECWZZsG+jR8z53C0Z61vZv6zqtPP4iwoUUXU QEBmWU7lbbslS05XXAL9/iBlcVm7ImJVzR0+MYrNSsg== X-Received: by 2002:a17:90b:56c3:b0:352:ebe9:2828 with SMTP id 98e67ed59e1d1-3543b416d7dmr2651094a91.7.1769793271050; Fri, 30 Jan 2026 09:14:31 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-3540f3a37f6sm1168618a91.6.2026.01.30.09.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jan 2026 09:14:31 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.29.101]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 4E88D342042; Fri, 30 Jan 2026 10:14:30 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 4AADBE40249; Fri, 30 Jan 2026 10:14:30 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe Cc: Govindarajulu Varadarajan , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 3/3] ublk: drop ublk_ctrl_start_recovery() header argument Date: Fri, 30 Jan 2026 10:14:14 -0700 Message-ID: <20260130171414.1376543-4-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20260130171414.1376543-1-csander@purestorage.com> References: <20260130171414.1376543-1-csander@purestorage.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ublk_ctrl_start_recovery() only uses its const struct ublksrv_ctrl_cmd * header argument to log the dev_id. But this value is already available in struct ublk_device's ub_number field. So log ub_number instead and drop the unused header argument. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- drivers/block/ublk_drv.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 8122b012a7ae..60d07480a24c 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -4870,12 +4870,11 @@ static int ublk_ctrl_set_params(struct ublk_device = *ub, mutex_unlock(&ub->mutex); =20 return ret; } =20 -static int ublk_ctrl_start_recovery(struct ublk_device *ub, - const struct ublksrv_ctrl_cmd *header) +static int ublk_ctrl_start_recovery(struct ublk_device *ub) { int ret =3D -EINVAL; =20 mutex_lock(&ub->mutex); if (ublk_nosrv_should_stop_dev(ub)) @@ -4900,11 +4899,11 @@ static int ublk_ctrl_start_recovery(struct ublk_dev= ice *ub, */ if (test_bit(UB_STATE_OPEN, &ub->state) || !ublk_dev_in_recoverable_state= (ub)) { ret =3D -EBUSY; goto out_unlock; } - pr_devel("%s: start recovery for dev id %d.\n", __func__, header->dev_id); + pr_devel("%s: start recovery for dev id %d\n", __func__, ub->ub_number); init_completion(&ub->completion); ret =3D 0; out_unlock: mutex_unlock(&ub->mutex); return ret; @@ -5281,11 +5280,11 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd = *cmd, break; case UBLK_CMD_SET_PARAMS: ret =3D ublk_ctrl_set_params(ub, &header); break; case UBLK_CMD_START_USER_RECOVERY: - ret =3D ublk_ctrl_start_recovery(ub, &header); + ret =3D ublk_ctrl_start_recovery(ub); break; case UBLK_CMD_END_USER_RECOVERY: ret =3D ublk_ctrl_end_recovery(ub, &header); break; case UBLK_CMD_UPDATE_SIZE: --=20 2.45.2