Skip to content

Commit

Permalink
ALSA: line6: Fix POD sysfs attributes segfault
Browse files Browse the repository at this point in the history
The commit 02fc76f changed base of the sysfs attributes from device to card.
The "show" callbacks dereferenced wrong objects because of this.

Fixes: 02fc76f ('ALSA: line6: Create sysfs via snd_card_add_dev_attr()')
Cc: <stable@vger.kernel.org> # v4.0+
Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Andrej Krutak <dev@andree.sk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Andrej Krutak authored and Takashi Iwai committed Aug 22, 2016
1 parent adc8a43 commit b027d11
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions sound/usb/line6/pod.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,8 @@ static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
static ssize_t serial_number_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct usb_interface *interface = to_usb_interface(dev);
struct usb_line6_pod *pod = usb_get_intfdata(interface);
struct snd_card *card = dev_to_snd_card(dev);
struct usb_line6_pod *pod = card->private_data;

return sprintf(buf, "%u\n", pod->serial_number);
}
Expand All @@ -256,8 +256,8 @@ static ssize_t serial_number_show(struct device *dev,
static ssize_t firmware_version_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct usb_interface *interface = to_usb_interface(dev);
struct usb_line6_pod *pod = usb_get_intfdata(interface);
struct snd_card *card = dev_to_snd_card(dev);
struct usb_line6_pod *pod = card->private_data;

return sprintf(buf, "%d.%02d\n", pod->firmware_version / 100,
pod->firmware_version % 100);
Expand All @@ -269,8 +269,8 @@ static ssize_t firmware_version_show(struct device *dev,
static ssize_t device_id_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct usb_interface *interface = to_usb_interface(dev);
struct usb_line6_pod *pod = usb_get_intfdata(interface);
struct snd_card *card = dev_to_snd_card(dev);
struct usb_line6_pod *pod = card->private_data;

return sprintf(buf, "%d\n", pod->device_id);
}
Expand Down

0 comments on commit b027d11

Please sign in to comment.