From nobody Wed Apr 1 09:43:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E3DF4534AC for ; Tue, 31 Mar 2026 21:46:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774993574; cv=none; b=YQOtZnBYQjBFXdjS5Rc6Dz3sUgengNvPE6qfgk0djwA2Zje3TR5S7E3h9w4moI/zOaOI0T2A4gOBCmA1geEQk+3CNeq4TcXVFZxgffIYuycGuAvgdxhRjRPC1A+utm6fD9pBTX9Ihtvy81EbS03nKJAJ6z0rBRtNFYa+CzJeLRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774993574; c=relaxed/simple; bh=9BSSL+KAudQ3AGmPfh5Xthg06x5txVoPZreNnfyXHtU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z8/+I2SUHBxvHizAYRFzZmuZYa3FMBtYYA/Q58FqLzYA0fmSR5vdm+42RkymjWEEW76RjHy9tNYVc5bAO8mOwZ2FEtJaGNaBNtrZfIer7c3GhlBCeXrVXsk7aWh479Hp1+7fkjyAZnF4D6hGerptbHyHgYrjQZsncJBtv7upXPc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YWpP8siK; arc=none smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YWpP8siK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774993573; x=1806529573; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9BSSL+KAudQ3AGmPfh5Xthg06x5txVoPZreNnfyXHtU=; b=YWpP8siKxW379VZFtZ5Pkr88dh8EZ7DVIdoH9TJICtFCcctL8nMm/1ep lixRUPMhWclZ5JhcfP5YJjrv9qoYlMOhahghK9WUEM1qbOlg3RsHwYeSU qV60WmLGEFeAgiFaqtSs565K27xXH3snBXnRALqXR3fnssxfvuYuKIGCl snptS6kpcVfuYoQpTAJamOuPeaY+oQxxevhuM9jpa5cagrmyROLLdHDq7 NgfucO5gA1aekQDFOVOdPWBULMw6ql88a+OPyXFh45tr/h0BuUjW1Yqj6 RGOzHqexHXMgie+/FAgkFB/orCWQgZ+izykuZV3b4wgzKsyiIzCiU5aZv Q==; X-CSE-ConnectionGUID: FgcAxH+qTdu4oibzg2ETNg== X-CSE-MsgGUID: YQFRWX5jS3mhxLGT4Bhiww== X-IronPort-AV: E=McAfee;i="6800,10657,11745"; a="79627247" X-IronPort-AV: E=Sophos;i="6.23,152,1770624000"; d="scan'208";a="79627247" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Mar 2026 14:46:11 -0700 X-CSE-ConnectionGUID: qUt5AdalQ9e0uGmJweMTKA== X-CSE-MsgGUID: P+R1D3UsRAGaaSzwJn6+EQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,152,1770624000"; d="scan'208";a="249701127" Received: from dwillia2-desk.jf.intel.com ([10.88.27.145]) by fmviesa001.fm.intel.com with ESMTP; 31 Mar 2026 14:46:10 -0700 From: Dan Williams To: mcgrof@kernel.org, russ.weight@linux.dev, dakr@kernel.org Cc: linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "Rafael J. Wysocki" , Chao Gao Subject: [PATCH 2/3] firmware_loader: Stop pinning parent device per workqueue invocation Date: Tue, 31 Mar 2026 14:47:25 -0700 Message-ID: <20260331214726.903274-3-dan.j.williams@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260331214726.903274-1-dan.j.williams@intel.com> References: <20260331214726.903274-1-dan.j.williams@intel.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" The device core pins parent devices while children are registered. As long as all usage of the parent device by the firmware_loader ends at firmware_upload_unregister(), no per queue_work() reference is needed. Now that firmware_upload_unregister() holds its own parent device reference over the child device_del() and flush_work() events, the per queue_work() reference can be deleted. Cc: Luis Chamberlain Cc: Russ Weight Cc: Danilo Krummrich Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Cc: Chao Gao Signed-off-by: Dan Williams --- drivers/base/firmware_loader/sysfs_upload.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/base/firmware_loader/sysfs_upload.c b/drivers/base/fir= mware_loader/sysfs_upload.c index 87c4f2a9a21b..23f6cdaf29c5 100644 --- a/drivers/base/firmware_loader/sysfs_upload.c +++ b/drivers/base/firmware_loader/sysfs_upload.c @@ -176,7 +176,7 @@ static void fw_upload_main(struct work_struct *work) ret =3D fwlp->ops->prepare(fwl, fwlp->data, fwlp->remaining_size); if (ret !=3D FW_UPLOAD_ERR_NONE) { fw_upload_set_error(fwlp, ret); - goto putdev_exit; + goto out; } =20 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_TRANSFERRING); @@ -204,9 +204,7 @@ static void fw_upload_main(struct work_struct *work) done: if (fwlp->ops->cleanup) fwlp->ops->cleanup(fwl); - -putdev_exit: - put_device(fw_dev->parent); +out: =20 /* * Note: fwlp->remaining_size is left unmodified here to provide @@ -249,8 +247,6 @@ int fw_upload_start(struct fw_sysfs *fw_sysfs) return -EBUSY; } =20 - get_device(fw_dev->parent); /* released in fw_upload_main */ - fwlp->progress =3D FW_UPLOAD_PROG_RECEIVING; fwlp->err_code =3D 0; fwlp->remaining_size =3D fw_priv->size; --=20 2.53.0