From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 C6E90279329 for ; Sat, 13 Jun 2026 20:19:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781381952; cv=none; b=FOQ6BajFu5jV2qAMT+o1oKoYnnDtttEWKkhBgDvIE3yGmcS+FwJmInjdlmbHmJHCsifwyr5oE9So5N0ehJZkuDLhHwCiiEL93Jx5kvpNqnyRuyEdZaOuyEsWeFJ+ProUIrqTkfPwtxm6nlIicYcgHUSqIFsjfnjdYLRmfZ1KN04= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781381952; c=relaxed/simple; bh=/lLAwCB04viPlzOFwK4tQlglFCwf4KPbJnwB6ud+6hg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=YtqqsBGC54M9xheFS1BMHjYnjdkov/rceWvYJu5Izk7l4XVZn8K8EX7pfCjDIx9MN8Z4+KddMObIXRWWZhcG7jrfBrJmEQmeuiyZDaI2IclgH4wRGR+wbq63CyWN/VBPMeatFcYzIFB5NIaEw6nEZ+4FxaBhdixRPrSP0a3f2zk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dMWzPWU9; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dMWzPWU9" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-36bdda53d99so790184a91.0 for ; Sat, 13 Jun 2026 13:19:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781381950; x=1781986750; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=t8S/FRZaPPC7RlOodUALTRDD+yK09EFYwcSWuYSfBKw=; b=dMWzPWU9PuxfAA+iMdcEOkdPWcdoL3SkHP9NDcN2W0nhhINO3NJFzz7pbMOtmiBSQ+ +oLL2TsfOzymJY88X6fEREie6EVAR2GMVnSxtCX8aaAp1KbsiXWy6931Y7Gf24eg56ZD MHJgSLh7TnCnaCL3lwX6ynmXe0HAEtrUWt5Wv2qE/5U75EocJEwjkxf1JMyLA8CWtxAV 11R5BGiJoPJLNod2ggRPzfjDvNLerfjrSyGTAH/i0YwVvkgBr65GHeSZFlEX73mANguI xfYGFVjxFABENF/Qkc1vhMLAoEtm/WcuujTM9ubjKu1Bx0Q0s+ZldVW5q/wvuhoN8qEg CWqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781381950; x=1781986750; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=t8S/FRZaPPC7RlOodUALTRDD+yK09EFYwcSWuYSfBKw=; b=FpwL9U5EQObno6vXs1D1OysykIwXYzwWb1B6f12LMcDKpQzDu2aMkQlkCyw18/XX1m FDOyr6xjhCB0NHswmLZAUNx6xeZ/ki5ArxJfPxmhTISMzaJg+ZqxHl3QDRKJQ7rUMPvo yq6pBnIRVT9ECyJP7fpz2+1UpSgoCDgdPfdbUWvdpBFCqvP8co14eU9LVjQ1Bm0XQKAv FeEv9MhOaBxzbu8SHUxbl9FvJs5FhTDk1j0pjGGSPBvQAHygWp54UIYNhwDWXUC4+8dl zzhqCzwN9KNltqX56AC6M9tHvTbGUS3wzcsN0fY6iEdTHHvHjpEGXgqzGDx2qI+sDBFx i67Q== X-Forwarded-Encrypted: i=1; AFNElJ9C39yaVbJlPoVNRC9eylDs+YO2iH3AxTO+9lGm3KV41yel8MvjyxOqVpr9GPZPcLFRpHexym7CZXftlEA=@vger.kernel.org X-Gm-Message-State: AOJu0YzeSQoonZVp45UMt7gLAckaMLvZXGbOOPrMsBjIv5Havo+WCDtW O2WsIIbJKLVeaAGeMQagpm27BLa+hkBswAgr2AAXlSk867DTzJDnH8ks X-Gm-Gg: Acq92OHCfIxhGucnf3Uaf5Yh6fW4Ok5jQZg5IgnJOY0+RO7Q8KQYNHUHQ1p20JcmA7D OqbnSQOm/4BP1QTFqqNJ5fYRIE1j1ofyt0I4cWE9hQRTLQBmVYTpPJ1d0mhLL16I8IZPPqMGPw2 SPGnzSjIB4JpCJAn1Ufroo11K3FIg4HcONDWshzUCpvVgUymXKc23CIG2MMZn4R5E8RpOknNjJI ysZ5WvMdmz3BDQZChn7TXyp7AiUw0vAkjL5HApwjAhYGEUv8s09hfNLztYCDytb8jagGbN7R8r1 EM8r0tQFq8jBCi/KoH3VG0/12wRGzpZc/5q9j+fRz7JbptdUVjEpCJOyySokq6BLtc8FduRS7X2 m5UH6gUjm717IzSKIvsT8VUmRXIWx5HJTMhiwGl4aI/Z2qzqDFygkdAU6jStLpBs12RePSj5MhD HoFsnNJhqOxgIz/gWokN7YoCpH8H2fSlfCj80CHBEvXxNzso7RjrF6F9N/agbBl3ayonvbiY7yE foHgO/J/A/9N/Ir9zuUGg194QdPo/FaCgg= X-Received: by 2002:a17:90b:514f:b0:35a:189b:43db with SMTP id 98e67ed59e1d1-37a0184a3bemr8740341a91.4.1781381950019; Sat, 13 Jun 2026 13:19:10 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:46e3:727c:48bc:b7a2]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37a20dbd301sm5878092a91.10.2026.06.13.13.19.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Jun 2026 13:19:09 -0700 (PDT) From: Rosen Penev To: linux-usb@vger.kernel.org Cc: Bastien Nocera , Greg Kroah-Hartman , linux-kernel@vger.kernel.org (open list) Subject: [PATCH] usb: apple-mfi-fastcharge: Convert to devm resources Date: Sat, 13 Jun 2026 13:18:51 -0700 Message-ID: <20260613201851.63191-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Use devm_kzalloc(), devm_kasprintf(), and devm_power_supply_register() to let the driver core handle resource cleanup. This allows removing the mfi_fc_disconnect() function and the error labels in probe. Also take the opportunity to shrink the private struct and move the variables in probe as devm doesn't need them in the struct. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/usb/misc/apple-mfi-fastcharge.c | 61 ++++++------------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/drivers/usb/misc/apple-mfi-fastcharge.c b/drivers/usb/misc/apple-mfi-fastcharge.c index af266e19f2fd..c1064f672d6d 100644 --- a/drivers/usb/misc/apple-mfi-fastcharge.c +++ b/drivers/usb/misc/apple-mfi-fastcharge.c @@ -43,8 +43,6 @@ MODULE_DEVICE_TABLE(usb, mfi_fc_id_table); /* Driver-local specific stuff */ struct mfi_device { struct usb_device *udev; - struct power_supply *battery; - struct power_supply_desc battery_desc; int charge_type; }; @@ -177,67 +175,34 @@ static bool mfi_fc_match(struct usb_device *udev) static int mfi_fc_probe(struct usb_device *udev) { struct power_supply_config battery_cfg = {}; - struct mfi_device *mfi = NULL; - char *battery_name; - int err; - - if (!mfi_fc_match(udev)) - return -ENODEV; + struct power_supply_desc battery_desc; + struct power_supply *battery; + struct mfi_device *mfi; - mfi = kzalloc_obj(struct mfi_device); + mfi = devm_kzalloc(&udev->dev, sizeof(*mfi), GFP_KERNEL); if (!mfi) return -ENOMEM; - battery_name = kasprintf(GFP_KERNEL, "apple_mfi_fastcharge_%d-%d", - udev->bus->busnum, udev->devnum); - if (!battery_name) { - err = -ENOMEM; - goto err_free_mfi; - } - - mfi->battery_desc = apple_mfi_fc_desc; - mfi->battery_desc.name = battery_name; + battery_desc = apple_mfi_fc_desc; + battery_desc.name = devm_kasprintf(&udev->dev, GFP_KERNEL, + "apple_mfi_fastcharge_%d-%d", + udev->bus->busnum, + udev->devnum); + if (!battery_desc.name) + return -ENOMEM; battery_cfg.drv_data = mfi; mfi->charge_type = POWER_SUPPLY_CHARGE_TYPE_TRICKLE; - mfi->battery = power_supply_register(&udev->dev, - &mfi->battery_desc, - &battery_cfg); - if (IS_ERR(mfi->battery)) { - dev_err(&udev->dev, "Can't register battery\n"); - err = PTR_ERR(mfi->battery); - goto err_free_name; - } - mfi->udev = udev; - dev_set_drvdata(&udev->dev, mfi); - - return 0; - -err_free_name: - kfree(battery_name); -err_free_mfi: - kfree(mfi); - return err; -} - -static void mfi_fc_disconnect(struct usb_device *udev) -{ - struct mfi_device *mfi; - mfi = dev_get_drvdata(&udev->dev); - if (mfi->battery) - power_supply_unregister(mfi->battery); - kfree(mfi->battery_desc.name); - dev_set_drvdata(&udev->dev, NULL); - kfree(mfi); + battery = devm_power_supply_register(&udev->dev, &battery_desc, &battery_cfg); + return PTR_ERR_OR_ZERO(battery); } static struct usb_device_driver mfi_fc_driver = { .name = "apple-mfi-fastcharge", .probe = mfi_fc_probe, - .disconnect = mfi_fc_disconnect, .id_table = mfi_fc_id_table, .match = mfi_fc_match, .generic_subclass = 1, -- 2.54.0