| From 99401e57b28ce416d64ee4a1d138d133e53bc74d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 16 Dec 2025 15:06:32 +0100 |
| Subject: ALSA: usx2y: Relax __free() variable declarations |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| [ Upstream commit 43cc944c8e28d26f152198278f81cf7f9955ff85 ] |
| |
| We used to have a variable declaration with __free() initialized with |
| NULL. This was to keep the old coding style rule, but recently it's |
| relaxed and rather recommends to follow the new rule to declare in |
| place of use for __free() -- which avoids potential deadlocks or UAFs |
| with nested cleanups. |
| |
| Although the current code has no bug, per se, let's follow the new |
| standard and move the declaration to the place of assignment (or |
| directly assign the allocated result) instead of NULL initializations. |
| |
| Fixes: 67afec157fe6 ("ALSA: usb-audio: us144mkii: Add MIDI support and mixer controlsj") |
| Fixes: a2a2210f2c2e ("ALSA: usb-audio: us144mkii: Implement audio playback and feedback") |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Link: https://patch.msgid.link/20251216140634.171890-11-tiwai@suse.de |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/usb/usx2y/us144mkii.c | 4 ++-- |
| sound/usb/usx2y/us144mkii_controls.c | 4 ++-- |
| sound/usb/usx2y/us144mkii_pcm.c | 4 ++-- |
| 3 files changed, 6 insertions(+), 6 deletions(-) |
| |
| diff --git a/sound/usb/usx2y/us144mkii.c b/sound/usb/usx2y/us144mkii.c |
| index f6572a576c150..bc71968df8e2c 100644 |
| --- a/sound/usb/usx2y/us144mkii.c |
| +++ b/sound/usb/usx2y/us144mkii.c |
| @@ -412,7 +412,6 @@ static int tascam_probe(struct usb_interface *intf, |
| struct snd_card *card; |
| struct tascam_card *tascam; |
| int err; |
| - char *handshake_buf __free(kfree) = NULL; |
| |
| if (dev->speed != USB_SPEED_HIGH) |
| dev_info( |
| @@ -439,7 +438,8 @@ static int tascam_probe(struct usb_interface *intf, |
| return -ENOENT; |
| } |
| |
| - handshake_buf = kmalloc(1, GFP_KERNEL); |
| + char *handshake_buf __free(kfree) = |
| + kmalloc(1, GFP_KERNEL); |
| if (!handshake_buf) |
| return -ENOMEM; |
| |
| diff --git a/sound/usb/usx2y/us144mkii_controls.c b/sound/usb/usx2y/us144mkii_controls.c |
| index 5d69441ef414b..62055fb8e7bac 100644 |
| --- a/sound/usb/usx2y/us144mkii_controls.c |
| +++ b/sound/usb/usx2y/us144mkii_controls.c |
| @@ -373,7 +373,6 @@ static int tascam_samplerate_get(struct snd_kcontrol *kcontrol, |
| { |
| struct tascam_card *tascam = |
| (struct tascam_card *)snd_kcontrol_chip(kcontrol); |
| - u8 *buf __free(kfree) = NULL; |
| int err; |
| u32 rate = 0; |
| |
| @@ -384,7 +383,8 @@ static int tascam_samplerate_get(struct snd_kcontrol *kcontrol, |
| } |
| } |
| |
| - buf = kmalloc(3, GFP_KERNEL); |
| + u8 *buf __free(kfree) = |
| + kmalloc(3, GFP_KERNEL); |
| if (!buf) |
| return -ENOMEM; |
| |
| diff --git a/sound/usb/usx2y/us144mkii_pcm.c b/sound/usb/usx2y/us144mkii_pcm.c |
| index 0c84304d46246..03dfb1f388012 100644 |
| --- a/sound/usb/usx2y/us144mkii_pcm.c |
| +++ b/sound/usb/usx2y/us144mkii_pcm.c |
| @@ -115,7 +115,6 @@ void process_capture_routing_us144mkii(struct tascam_card *tascam, |
| int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int rate) |
| { |
| struct usb_device *dev = tascam->dev; |
| - u8 *rate_payload_buf __free(kfree) = NULL; |
| u16 rate_vendor_wValue; |
| int err = 0; |
| const u8 *current_payload_src; |
| @@ -148,7 +147,8 @@ int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int rate) |
| return -EINVAL; |
| } |
| |
| - rate_payload_buf = kmemdup(current_payload_src, 3, GFP_KERNEL); |
| + u8 *rate_payload_buf __free(kfree) = |
| + kmemdup(current_payload_src, 3, GFP_KERNEL); |
| if (!rate_payload_buf) |
| return -ENOMEM; |
| |
| -- |
| 2.51.0 |
| |