1. 14 Apr, 2021 14 commits
    • Miklos Szeredi's avatar
      cuse: simplify refcount · 3c9c1433
      Miklos Szeredi authored
      Put extra reference early in cuse_channel_open().
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      3c9c1433
    • Miklos Szeredi's avatar
      cuse: prevent clone · 8217673d
      Miklos Szeredi authored
      For cloned connections cuse_channel_release() will be called more than
      once, resulting in use after free.
      
      Prevent device cloning for CUSE, which does not make sense at this point,
      and highly unlikely to be used in real life.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      8217673d
    • Miklos Szeredi's avatar
      virtiofs: fix userns · 0a7419c6
      Miklos Szeredi authored
      get_user_ns() is done twice (once in virtio_fs_get_tree() and once in
      fuse_conn_init()), resulting in a reference leak.
      
      Also looks better to use fsc->user_ns (which *should* be the
      current_user_ns() at this point).
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      0a7419c6
    • Jiapeng Chong's avatar
      virtiofs: remove useless function · 07595bfa
      Jiapeng Chong authored
      Fix the following clang warning:
      
      fs/fuse/virtio_fs.c:130:35: warning: unused function 'vq_to_fpq'
      [-Wunused-function].
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      07595bfa
    • Connor Kuehl's avatar
      virtiofs: split requests that exceed virtqueue size · a7f0d7aa
      Connor Kuehl authored
      If an incoming FUSE request can't fit on the virtqueue, the request is
      placed onto a workqueue so a worker can try to resubmit it later where
      there will (hopefully) be space for it next time.
      
      This is fine for requests that aren't larger than a virtqueue's maximum
      capacity.  However, if a request's size exceeds the maximum capacity of the
      virtqueue (even if the virtqueue is empty), it will be doomed to a life of
      being placed on the workqueue, removed, discovered it won't fit, and placed
      on the workqueue yet again.
      
      Furthermore, from section 2.6.5.3.1 (Driver Requirements: Indirect
      Descriptors) of the virtio spec:
      
        "A driver MUST NOT create a descriptor chain longer than the Queue
        Size of the device."
      
      To fix this, limit the number of pages FUSE will use for an overall
      request.  This way, each request can realistically fit on the virtqueue
      when it is decomposed into a scattergather list and avoid violating section
      2.6.5.3.1 of the virtio spec.
      Signed-off-by: default avatarConnor Kuehl <ckuehl@redhat.com>
      Reviewed-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      a7f0d7aa
    • Luis Henriques's avatar
      virtiofs: fix memory leak in virtio_fs_probe() · c79c5e01
      Luis Henriques authored
      When accidentally passing twice the same tag to qemu, kmemleak ended up
      reporting a memory leak in virtiofs.  Also, looking at the log I saw the
      following error (that's when I realised the duplicated tag):
      
        virtiofs: probe of virtio5 failed with error -17
      
      Here's the kmemleak log for reference:
      
      unreferenced object 0xffff888103d47800 (size 1024):
        comm "systemd-udevd", pid 118, jiffies 4294893780 (age 18.340s)
        hex dump (first 32 bytes):
          00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
          ff ff ff ff ff ff ff ff 80 90 02 a0 ff ff ff ff  ................
        backtrace:
          [<000000000ebb87c1>] virtio_fs_probe+0x171/0x7ae [virtiofs]
          [<00000000f8aca419>] virtio_dev_probe+0x15f/0x210
          [<000000004d6baf3c>] really_probe+0xea/0x430
          [<00000000a6ceeac8>] device_driver_attach+0xa8/0xb0
          [<00000000196f47a7>] __driver_attach+0x98/0x140
          [<000000000b20601d>] bus_for_each_dev+0x7b/0xc0
          [<00000000399c7b7f>] bus_add_driver+0x11b/0x1f0
          [<0000000032b09ba7>] driver_register+0x8f/0xe0
          [<00000000cdd55998>] 0xffffffffa002c013
          [<000000000ea196a2>] do_one_initcall+0x64/0x2e0
          [<0000000008f727ce>] do_init_module+0x5c/0x260
          [<000000003cdedab6>] __do_sys_finit_module+0xb5/0x120
          [<00000000ad2f48c6>] do_syscall_64+0x33/0x40
          [<00000000809526b5>] entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLuis Henriques <lhenriques@suse.de>
      Fixes: a62a8ef9 ("virtio-fs: add virtiofs filesystem")
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      c79c5e01
    • Vivek Goyal's avatar
      fuse: invalidate attrs when page writeback completes · 3466958b
      Vivek Goyal authored
      In fuse when a direct/write-through write happens we invalidate attrs
      because that might have updated mtime/ctime on server and cached
      mtime/ctime will be stale.
      
      What about page writeback path.  Looks like we don't invalidate attrs
      there.  To be consistent, invalidate attrs in writeback path as well.  Only
      exception is when writeback_cache is enabled.  In that case we strust local
      mtime/ctime and there is no need to invalidate attrs.
      
      Recently users started experiencing failure of xfstests generic/080,
      geneirc/215 and generic/614 on virtiofs.  This happened only newer "stat"
      utility and not older one.  This patch fixes the issue.
      
      So what's the root cause of the issue.  Here is detailed explanation.
      
      generic/080 test does mmap write to a file, closes the file and then checks
      if mtime has been updated or not.  When file is closed, it leads to
      flushing of dirty pages (and that should update mtime/ctime on server).
      But we did not explicitly invalidate attrs after writeback finished.  Still
      generic/080 passed so far and reason being that we invalidated atime in
      fuse_readpages_end().  This is called in fuse_readahead() path and always
      seems to trigger before mmaped write.
      
      So after mmaped write when lstat() is called, it sees that atleast one of
      the fields being asked for is invalid (atime) and that results in
      generating GETATTR to server and mtime/ctime also get updated and test
      passes.
      
      But newer /usr/bin/stat seems to have moved to using statx() syscall now
      (instead of using lstat()).  And statx() allows it to query only ctime or
      mtime (and not rest of the basic stat fields).  That means when querying
      for mtime, fuse_update_get_attr() sees that mtime is not invalid (only
      atime is invalid).  So it does not generate a new GETATTR and fill stat
      with cached mtime/ctime.  And that means updated mtime is not seen by
      xfstest and tests start failing.
      
      Invalidating attrs after writeback completion should solve this problem in
      a generic manner.
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      3466958b
    • Vivek Goyal's avatar
      fuse: add a flag FUSE_SETXATTR_ACL_KILL_SGID to kill SGID · 550a7d3b
      Vivek Goyal authored
      When posix access ACL is set, it can have an effect on file mode and it can
      also need to clear SGID if.
      
      - None of caller's group/supplementary groups match file owner group.
      AND
      - Caller is not priviliged (No CAP_FSETID).
      
      As of now fuser server is responsible for changing the file mode as
      well. But it does not know whether to clear SGID or not.
      
      So add a flag FUSE_SETXATTR_ACL_KILL_SGID and send this info with SETXATTR
      to let file server know that sgid needs to be cleared as well.
      Reported-by: default avatarLuis Henriques <lhenriques@suse.de>
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      550a7d3b
    • Vivek Goyal's avatar
      fuse: extend FUSE_SETXATTR request · 52a4c95f
      Vivek Goyal authored
      Fuse client needs to send additional information to file server when it
      calls SETXATTR(system.posix_acl_access), so add extra flags field to the
      structure.
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      52a4c95f
    • Alessio Balsini's avatar
      fuse: fix matching of FUSE_DEV_IOC_CLONE command · 6076f5f3
      Alessio Balsini authored
      With commit f8425c93 ("fuse: 32-bit user space ioctl compat for fuse
      device") the matching constraints for the FUSE_DEV_IOC_CLONE ioctl command
      are relaxed, limited to the testing of command type and number.  As Arnd
      noticed, this is wrong as it wouldn't ensure the correctness of the data
      size or direction for the received FUSE device ioctl.
      
      Fix by bringing back the comparison of the ioctl received by the FUSE
      device to the originally generated FUSE_DEV_IOC_CLONE.
      
      Fixes: f8425c93 ("fuse: 32-bit user space ioctl compat for fuse device")
      Reported-by: default avatarArnd Bergmann <arnd@kernel.org>
      Signed-off-by: default avatarAlessio Balsini <balsini@android.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      6076f5f3
    • Bhaskar Chowdhury's avatar
      fuse: fix a typo · aa6ff555
      Bhaskar Chowdhury authored
      s/reponsible/responsible/
      Signed-off-by: default avatarBhaskar Chowdhury <unixbhaskar@gmail.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      aa6ff555
    • Miklos Szeredi's avatar
      fuse: don't zero pages twice · a73d47f5
      Miklos Szeredi authored
      All callers of fuse_short_read already set the .page_zeroing flag, so no
      need to do the tail zeroing again.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      a73d47f5
    • Connor Kuehl's avatar
      fuse: fix typo for fuse_conn.max_pages comment · 4b91459a
      Connor Kuehl authored
      'Maxmum' -> 'Maximum'
      Signed-off-by: default avatarConnor Kuehl <ckuehl@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      4b91459a
    • Vivek Goyal's avatar
      fuse: fix write deadlock · 4f06dd92
      Vivek Goyal authored
      There are two modes for write(2) and friends in fuse:
      
      a) write through (update page cache, send sync WRITE request to userspace)
      
      b) buffered write (update page cache, async writeout later)
      
      The write through method kept all the page cache pages locked that were
      used for the request.  Keeping more than one page locked is deadlock prone
      and Qian Cai demonstrated this with trinity fuzzing.
      
      The reason for keeping the pages locked is that concurrent mapped reads
      shouldn't try to pull possibly stale data into the page cache.
      
      For full page writes, the easy way to fix this is to make the cached page
      be the authoritative source by marking the page PG_uptodate immediately.
      After this the page can be safely unlocked, since mapped/cached reads will
      take the written data from the cache.
      
      Concurrent mapped writes will now cause data in the original WRITE request
      to be updated; this however doesn't cause any data inconsistency and this
      scenario should be exceedingly rare anyway.
      
      If the WRITE request returns with an error in the above case, currently the
      page is not marked uptodate; this means that a concurrent read will always
      read consistent data.  After this patch the page is uptodate between
      writing to the cache and receiving the error: there's window where a cached
      read will read the wrong data.  While theoretically this could be a
      regression, it is unlikely to be one in practice, since this is normal for
      buffered writes.
      
      In case of a partial page write to an already uptodate page the locking is
      also unnecessary, with the above caveats.
      
      Partial write of a not uptodate page still needs to be handled.  One way
      would be to read the complete page before doing the write.  This is not
      possible, since it might break filesystems that don't expect any READ
      requests when the file was opened O_WRONLY.
      
      The other solution is to serialize the synchronous write with reads from
      the partial pages.  The easiest way to do this is to keep the partial pages
      locked.  The problem is that a write() may involve two such pages (one head
      and one tail).  This patch fixes it by only locking the partial tail page.
      If there's a partial head page as well, then split that off as a separate
      WRITE request.
      Reported-by: default avatarQian Cai <cai@lca.pw>
      Link: https://lore.kernel.org/linux-fsdevel/4794a3fa3742a5e84fb0f934944204b55730829b.camel@lca.pw/
      Fixes: ea9b9907 ("fuse: implement perform_write")
      Cc: <stable@vger.kernel.org> # v2.6.26
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      4f06dd92
  2. 04 Apr, 2021 2 commits
    • Linus Torvalds's avatar
      Linux 5.12-rc6 · e49d033b
      Linus Torvalds authored
      e49d033b
    • Zheyu Ma's avatar
      firewire: nosy: Fix a use-after-free bug in nosy_ioctl() · 829933ef
      Zheyu Ma authored
      For each device, the nosy driver allocates a pcilynx structure.
      A use-after-free might happen in the following scenario:
      
       1. Open nosy device for the first time and call ioctl with command
          NOSY_IOC_START, then a new client A will be malloced and added to
          doubly linked list.
       2. Open nosy device for the second time and call ioctl with command
          NOSY_IOC_START, then a new client B will be malloced and added to
          doubly linked list.
       3. Call ioctl with command NOSY_IOC_START for client A, then client A
          will be readded to the doubly linked list. Now the doubly linked
          list is messed up.
       4. Close the first nosy device and nosy_release will be called. In
          nosy_release, client A will be unlinked and freed.
       5. Close the second nosy device, and client A will be referenced,
          resulting in UAF.
      
      The root cause of this bug is that the element in the doubly linked list
      is reentered into the list.
      
      Fix this bug by adding a check before inserting a client.  If a client
      is already in the linked list, don't insert it.
      
      The following KASAN report reveals it:
      
         BUG: KASAN: use-after-free in nosy_release+0x1ea/0x210
         Write of size 8 at addr ffff888102ad7360 by task poc
         CPU: 3 PID: 337 Comm: poc Not tainted 5.12.0-rc5+ #6
         Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
         Call Trace:
           nosy_release+0x1ea/0x210
           __fput+0x1e2/0x840
           task_work_run+0xe8/0x180
           exit_to_user_mode_prepare+0x114/0x120
           syscall_exit_to_user_mode+0x1d/0x40
           entry_SYSCALL_64_after_hwframe+0x44/0xae
      
         Allocated by task 337:
           nosy_open+0x154/0x4d0
           misc_open+0x2ec/0x410
           chrdev_open+0x20d/0x5a0
           do_dentry_open+0x40f/0xe80
           path_openat+0x1cf9/0x37b0
           do_filp_open+0x16d/0x390
           do_sys_openat2+0x11d/0x360
           __x64_sys_open+0xfd/0x1a0
           do_syscall_64+0x33/0x40
           entry_SYSCALL_64_after_hwframe+0x44/0xae
      
         Freed by task 337:
           kfree+0x8f/0x210
           nosy_release+0x158/0x210
           __fput+0x1e2/0x840
           task_work_run+0xe8/0x180
           exit_to_user_mode_prepare+0x114/0x120
           syscall_exit_to_user_mode+0x1d/0x40
           entry_SYSCALL_64_after_hwframe+0x44/0xae
      
         The buggy address belongs to the object at ffff888102ad7300 which belongs to the cache kmalloc-128 of size 128
         The buggy address is located 96 bytes inside of 128-byte region [ffff888102ad7300, ffff888102ad7380)
      
      [ Modified to use 'list_empty()' inside proper lock  - Linus ]
      
      Link: https://lore.kernel.org/lkml/1617433116-5930-1-git-send-email-zheyuma97@gmail.com/Reported-and-tested-by: default avatar马哲宇 (Zheyu Ma) <zheyuma97@gmail.com>
      Signed-off-by: default avatarZheyu Ma <zheyuma97@gmail.com>
      Cc: Greg Kroah-Hartman <greg@kroah.com>
      Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      829933ef
  3. 03 Apr, 2021 14 commits
  4. 02 Apr, 2021 10 commits
    • Linus Torvalds's avatar
      Merge tag 'block-5.12-2021-04-02' of git://git.kernel.dk/linux-block · d93a0d43
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - Remove comment that never came to fruition in 22 years of development
         (Christoph)
      
       - Remove unused request flag (Christoph)
      
       - Fix for null_blk fake timeout handling (Damien)
      
       - Fix for IOCB_NOWAIT being ignored for O_DIRECT on raw bdevs (Pavel)
      
       - Error propagation fix for multiple split bios (Yufen)
      
      * tag 'block-5.12-2021-04-02' of git://git.kernel.dk/linux-block:
        block: remove the unused RQF_ALLOCED flag
        block: update a few comments in uapi/linux/blkpg.h
        block: don't ignore REQ_NOWAIT for direct IO
        null_blk: fix command timeout completion handling
        block: only update parent bi_status when bio fail
      d93a0d43
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.12-2021-04-02' of git://git.kernel.dk/linux-block · 1faccb63
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Nothing really major in here, and finally nothing really related to
        signals. A few minor fixups related to the threading changes, and some
        general fixes, that's it.
      
        There's the pending gdb-get-confused-about-arch, but that's more of a
        cosmetic issue, nothing that hinder use of it. And given that other
        archs will likely be affected by that oddity too, better to postpone
        any changes there until 5.13 imho"
      
      * tag 'io_uring-5.12-2021-04-02' of git://git.kernel.dk/linux-block:
        io_uring: move reissue into regular IO path
        io_uring: fix EIOCBQUEUED iter revert
        io_uring/io-wq: protect against sprintf overflow
        io_uring: don't mark S_ISBLK async work as unbounded
        io_uring: drop sqd lock before handling signals for SQPOLL
        io_uring: handle setup-failed ctx in kill_timeouts
        io_uring: always go for cancellation spin on exec
      1faccb63
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 0a84c2e4
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These fix an ACPI tables management issue, an issue related to the
        ACPI enumeration of devices and CPU wakeup in the ACPI processor
        driver.
      
        Specifics:
      
         - Ensure that the memory occupied by ACPI tables on x86 will always
           be reserved to prevent it from being allocated for other purposes
           which was possible in some cases (Rafael Wysocki).
      
         - Fix the ACPI device enumeration code to prevent it from attempting
           to evaluate the _STA control method for devices with unmet
           dependencies which is likely to fail (Hans de Goede).
      
         - Fix the handling of CPU0 wakeup in the ACPI processor driver to
           prevent CPU0 online failures from occurring (Vitaly Kuznetsov)"
      
      * tag 'acpi-5.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: processor: Fix CPU0 wakeup in acpi_idle_play_dead()
        ACPI: scan: Fix _STA getting called on devices with unmet dependencies
        ACPI: tables: x86: Reserve memory occupied by ACPI tables
      0a84c2e4
    • Linus Torvalds's avatar
      Merge tag 'pm-5.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 9314a0e9
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These fix a race condition and an ordering issue related to using
        device links in the runtime PM framework and two kerneldoc comments in
        cpufreq.
      
        Specifics:
      
         - Fix race condition related to the handling of supplier devices
           during consumer device probe and fix the order of decrementation of
           two related reference counters in the runtime PM core code handling
           supplier devices (Adrian Hunter).
      
         - Fix kerneldoc comments in cpufreq that have not been updated along
           with the functions documented by them (Geert Uytterhoeven)"
      
      * tag 'pm-5.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM: runtime: Fix race getting/putting suppliers at probe
        PM: runtime: Fix ordering in pm_runtime_get_suppliers()
        cpufreq: Fix scaling_{available,boost}_frequencies_show() comments
      9314a0e9
    • Christoph Hellwig's avatar
      block: remove the unused RQF_ALLOCED flag · f06c6096
      Christoph Hellwig authored
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      f06c6096
    • Christoph Hellwig's avatar
      block: update a few comments in uapi/linux/blkpg.h · b9c6cdc3
      Christoph Hellwig authored
      The big top of the file comment talk about grand plans that never
      happened, so remove them to not confuse the readers.  Also mark the
      devname and volname fields as ignored as they were never used by the
      kernel.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b9c6cdc3
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.12-rc5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 05de4538
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "Fix stack trace entry size to stop showing garbage
      
        The macro that creates both the structure and the format displayed to
        user space for the stack trace event was changed a while ago to fix
        the parsing by user space tooling. But this change also modified the
        structure used to store the stack trace event. It changed the caller
        array field from [0] to [8].
      
        Even though the size in the ring buffer is dynamic and can be
        something other than 8 (user space knows how to handle this), the 8
        extra words was not accounted for when reserving the event on the ring
        buffer, and added 8 more entries, due to the calculation of
        "sizeof(*entry) + nr_entries * sizeof(long)", as the sizeof(*entry)
        now contains 8 entries.
      
        The size of the caller field needs to be subtracted from the size of
        the entry to create the correct allocation size"
      
      * tag 'trace-v5.12-rc5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Fix stack trace event size
      05de4538
    • Jens Axboe's avatar
      io_uring: move reissue into regular IO path · 230d50d4
      Jens Axboe authored
      It's non-obvious how retry is done for block backed files, when it happens
      off the kiocb done path. It also makes it tricky to deal with the iov_iter
      handling.
      
      Just mark the req as needing a reissue, and handling it from the
      submission path instead. This makes it directly obvious that we're not
      re-importing the iovec from userspace past the submit point, and it means
      that we can just reuse our usual -EAGAIN retry path from the read/write
      handling.
      
      At some point in the future, we'll gain the ability to always reliably
      return -EAGAIN through the stack. A previous attempt on the block side
      didn't pan out and got reverted, hence the need to check for this
      information out-of-band right now.
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      230d50d4
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-tables' and 'acpi-scan' · 91463ebf
      Rafael J. Wysocki authored
      * acpi-tables:
        ACPI: tables: x86: Reserve memory occupied by ACPI tables
      
      * acpi-scan:
        ACPI: scan: Fix _STA getting called on devices with unmet dependencies
      91463ebf
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · ac1790ad
      Rafael J. Wysocki authored
      * pm-cpufreq:
        cpufreq: Fix scaling_{available,boost}_frequencies_show() comments
      ac1790ad