• Todd Brandt's avatar
    pm-graph: sleepgraph: Avoid crashing on binary data in device names · 6fa7f537
    Todd Brandt authored
    A regression has occurred in the hid-sensor code where a device
    name string has not been initialized to 0, and ends up without
    a NULL char and is printed with %s. This includes random binary
    data in the device name, which makes its way into the ftrace output
    and ends up crashing sleepgraph because it expects the ftrace output
    to be ASCII only.
    
    For example: "HID-SENSOR-INT-020b?.39.auto" ends up in ftrace instead
    of "HID-SENSOR-INT-020b.39.auto". It causes this crash in sleepgraph:
    
      File "/usr/bin/sleepgraph", line 5579, in executeSuspend
        for line in fp:
      File "/usr/lib/python3.10/codecs.py", line 322, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position
    1568: invalid start byte
    
    The issue is present in 6.3-rc1 and is described in full here:
    https://bugzilla.kernel.org/show_bug.cgi?id=217169
    
    A separate fix has been submitted to have this issue repaired, but
    it has also exposed a larger bug in sleepgraph, since nothing should
    make sleepgraph crash. Sleepgraph needs to be able to handle binary
    data showing up in ftrace gracefully.
    
    Modify the ftrace processing code to treat it as potentially binary
    and to filter out binary data and leave just the ASCII.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=217169
    Fixes: 98c062e8 ("HID: hid-sensor-custom: Allow more custom iio sensors")
    Signed-off-by: default avatarTodd Brandt <todd.e.brandt@linux.intel.com>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    6fa7f537
sleepgraph.py 233 KB