lkml.org 
[lkml]   [2016]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 111/113] ALSA: line6: Fix POD sysfs attributes segfault
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Andrej Krutak <dev@andree.sk>

    commit b027d11263836a0cd335520175257dcb99b43757 upstream.

    The commit 02fc76f6a changed base of the sysfs attributes from device to card.
    The "show" callbacks dereferenced wrong objects because of this.

    Fixes: 02fc76f6a7db ('ALSA: line6: Create sysfs via snd_card_add_dev_attr()')
    Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
    Signed-off-by: Andrej Krutak <dev@andree.sk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/usb/line6/pod.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    --- a/sound/usb/line6/pod.c
    +++ b/sound/usb/line6/pod.c
    @@ -244,8 +244,8 @@ static int pod_set_system_param_int(stru
    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);
    }
    @@ -256,8 +256,8 @@ static ssize_t serial_number_show(struct
    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);
    @@ -269,8 +269,8 @@ static ssize_t firmware_version_show(str
    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);
    }

    \
     
     \ /
      Last update: 2016-09-17 09:58    [W:2.989 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site