1. 06 Jan, 2012 17 commits
  2. 03 Jan, 2012 2 commits
  3. 21 Dec, 2011 21 commits
    • Greg Kroah-Hartman's avatar
      Linux 3.0.14 · 6636552f
      Greg Kroah-Hartman authored
      6636552f
    • Stephen Warren's avatar
      ASoC: core: Don't schedule deferred_resume_work twice · c4e133f4
      Stephen Warren authored
      commit 82e14e8b upstream.
      
      For cards that have two or more DAIs, snd_soc_resume's loop over all
      DAIs ends up calling schedule_work(deferred_resume_work) once per DAI.
      Since this is the same work item each time, the 2nd and subsequent
      calls return 0 (work item already queued), and trigger the dev_err
      message below stating that a work item may have been lost.
      
      Solve this by adjusting the loop to simply calculate whether to run the
      resume work immediately or defer it, and then call schedule work (or not)
      one time based on that.
      
      Note: This has not been tested in mainline, but only in chromeos-2.6.38;
      mainline doesn't support suspend/resume on Tegra, nor does the mainline
      Tegra ASoC driver contain multiple DAIs. It has been compile-checked in
      mainline.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Acked-by: default avatarLiam Girdwood <lrg@ti.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c4e133f4
    • Bjørn Mork's avatar
      USB: option: Removing one bogus and adding some new Huawei combinations · 5dfcd4d5
      Bjørn Mork authored
      commit 02a551c9 upstream.
      
      Huawei use the product code HUAWEI_PRODUCT_E353 (0x1506) for a
      number of different devices, which each can appear with a number
      of different descriptor sets.  Different types of interfaces
      can be identified by looking at the subclass and protocol fields
      
      Subclass 1 protocol 8 is actually the data interface of a CDC
      ECM set, with subclass 1 protocol 9 as the control interface.
      Neither support serial data communcation, and cannot therefore
      be supported by this driver.
      
      At the same time, add a few other sets which appear if the
      device is configured in "Windows mode" using this modeswitch
      message:
      55534243000000000000000000000011060000000100000000000000000000
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5dfcd4d5
    • Alex Hermann's avatar
      usb: option: Add Huawei E398 controlling interfaces · 4c3f5007
      Alex Hermann authored
      commit 414b591f upstream.
      
      This patch adds the controlling interfaces for the Huawei E398.
      
      Thanks to Bjørn Mork <bjorn@mork.no> for extracting the interface
      numbers from the windows driver.
      Signed-off-by: default avatarAlex Hermann <alex@wenlex.nl>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      4c3f5007
    • Krzysztof Hałasa's avatar
      USB: cdc-acm: add IDs for Motorola H24 HSPA USB module. · d23d1930
      Krzysztof Hałasa authored
      commit 6abff5dc upstream.
      
      Add USB IDs for Motorola H24 HSPA USB module.
      Signed-off-by: default avatarKrzysztof Hałasa <khalasa@piap.pl>
      Acked-by: default avatarOliver Neukum <oneukum@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d23d1930
    • Yinghai Lu's avatar
      ibft: Fix finding IBFT ACPI table on UEFI · 02ca0566
      Yinghai Lu authored
      commit 935a9fee upstream.
      
      Found one system with UEFI/iBFT, kernel does not detect the iBFT during
      iscsi_ibft module loading.
      
      Root cause: on x86 (UEFI), we are calling of find_ibft_region() much earlier
      - specifically in setup_arch() before ACPI is enabled.
      
      Try to split acpi checking code out and call that later
      
      At that time ACPI iBFT already get permanent mapped with ioremap.
      So isa_virt_to_bus() will get wrong phys from right virt address.
      We could just skip that phys address printing.
      
      For legacy one, print the found address early.
      
      -v2: update comments and description according to Konrad.
      -v3: fix problem about module use case that is found by Konrad.
      -v4: use acpi_get_table() instead of acpi_table_parse() to handle module use case that is found by Konrad again..
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      02ca0566
    • Alex Deucher's avatar
    • Larry Finger's avatar
      staging: r8712u: Add new USB ID · fa0bd1d2
      Larry Finger authored
      commit c7caf4d4 upstream.
      
      Add USB ID for Sitecom WLA-2000 v1.001 WLAN.
      Reported-and-tested-by: default avatarRoland Gruber <post@rolandgruber.de>
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fa0bd1d2
    • Miklos Szeredi's avatar
      fuse: fix fuse_retrieve · 60923f67
      Miklos Szeredi authored
      commit 48706d0a upstream.
      
      Fix two bugs in fuse_retrieve():
      
       - retrieving more than one page would yield repeated instances of the
         first page
      
       - if more than FUSE_MAX_PAGES_PER_REQ pages were requested than the
         request page array would overflow
      
      fuse_retrieve() was added in 2.6.36 and these bugs had been there since the
      beginning.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      60923f67
    • Yongqiang Yang's avatar
      ext4: handle EOF correctly in ext4_bio_write_page() · 5da4b53a
      Yongqiang Yang authored
      commit 5a0dc736 upstream.
      
      We need to zero out part of a page which beyond EOF before setting uptodate,
      otherwise, mapread or write will see non-zero data beyond EOF.
      Signed-off-by: default avatarYongqiang Yang <xiaoqiangnk@gmail.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5da4b53a
    • Yongqiang Yang's avatar
      ext4: avoid potential hang in mpage_submit_io() when blocksize < pagesize · 8fe5e8ff
      Yongqiang Yang authored
      commit 13a79a47 upstream.
      
      If there is an unwritten but clean buffer in a page and there is a
      dirty buffer after the buffer, then mpage_submit_io does not write the
      dirty buffer out.  As a result, da_writepages loops forever.
      
      This patch fixes the problem by checking dirty flag.
      Signed-off-by: default avatarYongqiang Yang <xiaoqiangnk@gmail.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8fe5e8ff
    • Andrea Arcangeli's avatar
      ext4: avoid hangs in ext4_da_should_update_i_disksize() · dda54df8
      Andrea Arcangeli authored
      commit ea51d132 upstream.
      
      If the pte mapping in generic_perform_write() is unmapped between
      iov_iter_fault_in_readable() and iov_iter_copy_from_user_atomic(), the
      "copied" parameter to ->end_write can be zero. ext4 couldn't cope with
      it with delayed allocations enabled. This skips the i_disksize
      enlargement logic if copied is zero and no new data was appeneded to
      the inode.
      
       gdb> bt
       #0  0xffffffff811afe80 in ext4_da_should_update_i_disksize (file=0xffff88003f606a80, mapping=0xffff88001d3824e0, pos=0x1\
       08000, len=0x1000, copied=0x0, page=0xffffea0000d792e8, fsdata=0x0) at fs/ext4/inode.c:2467
       #1  ext4_da_write_end (file=0xffff88003f606a80, mapping=0xffff88001d3824e0, pos=0x108000, len=0x1000, copied=0x0, page=0\
       xffffea0000d792e8, fsdata=0x0) at fs/ext4/inode.c:2512
       #2  0xffffffff810d97f1 in generic_perform_write (iocb=<value optimized out>, iov=<value optimized out>, nr_segs=<value o\
       ptimized out>, pos=0x108000, ppos=0xffff88001e26be40, count=<value optimized out>, written=0x0) at mm/filemap.c:2440
       #3  generic_file_buffered_write (iocb=<value optimized out>, iov=<value optimized out>, nr_segs=<value optimized out>, p\
       os=0x108000, ppos=0xffff88001e26be40, count=<value optimized out>, written=0x0) at mm/filemap.c:2482
       #4  0xffffffff810db5d1 in __generic_file_aio_write (iocb=0xffff88001e26bde8, iov=0xffff88001e26bec8, nr_segs=0x1, ppos=0\
       xffff88001e26be40) at mm/filemap.c:2600
       #5  0xffffffff810db853 in generic_file_aio_write (iocb=0xffff88001e26bde8, iov=0xffff88001e26bec8, nr_segs=<value optimi\
       zed out>, pos=<value optimized out>) at mm/filemap.c:2632
       #6  0xffffffff811a71aa in ext4_file_write (iocb=0xffff88001e26bde8, iov=0xffff88001e26bec8, nr_segs=0x1, pos=0x108000) a\
       t fs/ext4/file.c:136
       #7  0xffffffff811375aa in do_sync_write (filp=0xffff88003f606a80, buf=<value optimized out>, len=<value optimized out>, \
       ppos=0xffff88001e26bf48) at fs/read_write.c:406
       #8  0xffffffff81137e56 in vfs_write (file=0xffff88003f606a80, buf=0x1ec2960 <Address 0x1ec2960 out of bounds>, count=0x4\
       000, pos=0xffff88001e26bf48) at fs/read_write.c:435
       #9  0xffffffff8113816c in sys_write (fd=<value optimized out>, buf=0x1ec2960 <Address 0x1ec2960 out of bounds>, count=0x\
       4000) at fs/read_write.c:487
       #10 <signal handler called>
       #11 0x00007f120077a390 in __brk_reservation_fn_dmi_alloc__ ()
       #12 0x0000000000000000 in ?? ()
       gdb> print offset
       $22 = 0xffffffffffffffff
       gdb> print idx
       $23 = 0xffffffff
       gdb> print inode->i_blkbits
       $24 = 0xc
       gdb> up
       #1  ext4_da_write_end (file=0xffff88003f606a80, mapping=0xffff88001d3824e0, pos=0x108000, len=0x1000, copied=0x0, page=0\
       xffffea0000d792e8, fsdata=0x0) at fs/ext4/inode.c:2512
       2512                    if (ext4_da_should_update_i_disksize(page, end)) {
       gdb> print start
       $25 = 0x0
       gdb> print end
       $26 = 0xffffffffffffffff
       gdb> print pos
       $27 = 0x108000
       gdb> print new_i_size
       $28 = 0x108000
       gdb> print ((struct ext4_inode_info *)((char *)inode-((int)(&((struct ext4_inode_info *)0)->vfs_inode))))->i_disksize
       $29 = 0xd9000
       gdb> down
       2467            for (i = 0; i < idx; i++)
       gdb> print i
       $30 = 0xd44acbee
      
      This is 100% reproducible with some autonuma development code tuned in
      a very aggressive manner (not normal way even for knumad) which does
      "exotic" changes to the ptes. It wouldn't normally trigger but I don't
      see why it can't happen normally if the page is added to swap cache in
      between the two faults leading to "copied" being zero (which then
      hangs in ext4). So it should be fixed. Especially possible with lumpy
      reclaim (albeit disabled if compaction is enabled) as that would
      ignore the young bits in the ptes.
      Signed-off-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      dda54df8
    • Theodore Ts'o's avatar
      ext4: display the correct mount option in /proc/mounts for [no]init_itable · ef91e169
      Theodore Ts'o authored
      commit fc6cb1cd upstream.
      
      /proc/mounts was showing the mount option [no]init_inode_table when
      the correct mount option that will be accepted by parse_options() is
      [no]init_itable.
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ef91e169
    • Ian Campbell's avatar
      xen: only limit memory map to maximum reservation for domain 0. · 37e8c2c9
      Ian Campbell authored
      commit d3db7281 upstream.
      
      d312ae87 "xen: use maximum reservation to limit amount of usable RAM"
      clamped the total amount of RAM to the current maximum reservation. This is
      correct for dom0 but is not correct for guest domains. In order to boot a guest
      "pre-ballooned" (e.g. with memory=1G but maxmem=2G) in order to allow for
      future memory expansion the guest must derive max_pfn from the e820 provided by
      the toolstack and not the current maximum reservation (which can reflect only
      the current maximum, not the guest lifetime max). The existing algorithm
      already behaves this correctly if we do not artificially limit the maximum
      number of pages for the guest case.
      
      For a guest booted with maxmem=512, memory=128 this results in:
       [    0.000000] BIOS-provided physical RAM map:
       [    0.000000]  Xen: 0000000000000000 - 00000000000a0000 (usable)
       [    0.000000]  Xen: 00000000000a0000 - 0000000000100000 (reserved)
      -[    0.000000]  Xen: 0000000000100000 - 0000000008100000 (usable)
      -[    0.000000]  Xen: 0000000008100000 - 0000000020800000 (unusable)
      +[    0.000000]  Xen: 0000000000100000 - 0000000020800000 (usable)
      ...
       [    0.000000] NX (Execute Disable) protection: active
       [    0.000000] DMI not present or invalid.
       [    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
       [    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
      -[    0.000000] last_pfn = 0x8100 max_arch_pfn = 0x1000000
      +[    0.000000] last_pfn = 0x20800 max_arch_pfn = 0x1000000
       [    0.000000] initial memory mapped : 0 - 027ff000
       [    0.000000] Base memory trampoline at [c009f000] 9f000 size 4096
      -[    0.000000] init_memory_mapping: 0000000000000000-0000000008100000
      -[    0.000000]  0000000000 - 0008100000 page 4k
      -[    0.000000] kernel direct mapping tables up to 8100000 @ 27bb000-27ff000
      +[    0.000000] init_memory_mapping: 0000000000000000-0000000020800000
      +[    0.000000]  0000000000 - 0020800000 page 4k
      +[    0.000000] kernel direct mapping tables up to 20800000 @ 26f8000-27ff000
       [    0.000000] xen: setting RW the range 27e8000 - 27ff000
       [    0.000000] 0MB HIGHMEM available.
      -[    0.000000] 129MB LOWMEM available.
      -[    0.000000]   mapped low ram: 0 - 08100000
      -[    0.000000]   low ram: 0 - 08100000
      +[    0.000000] 520MB LOWMEM available.
      +[    0.000000]   mapped low ram: 0 - 20800000
      +[    0.000000]   low ram: 0 - 20800000
      
      With this change "xl mem-set <domain> 512M" will successfully increase the
      guest RAM (by reducing the balloon).
      
      There is no change for dom0.
      Reported-and-Tested-by: default avatarGeorge Shuklin <george.shuklin@gmail.com>
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Reviewed-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      37e8c2c9
    • NeilBrown's avatar
      md/raid5: fix bug that could result in reads from a failed device. · d8091fda
      NeilBrown authored
      commit 355840e7 upstream.
      
      commit a8476277 in linux-3.0.9
      attempted to backport this to 3.0 but only made one change were two
      were necessary.  This add the second change.
      
      This bug was introduced in 415e72d0
      which was in 2.6.36.
      
      There is a small window of time between when a device fails and when
      it is removed from the array.  During this time we might still read
      from it, but we won't write to it - so it is possible that we could
      read stale data.
      
      We didn't need the test of 'Faulty' before because the test on
      In_sync is sufficient.  Since we started allowing reads from the early
      part of non-In_sync devices we need a test on Faulty too.
      
      This is suitable for any kernel from 2.6.36 onwards, though the patch
      might need a bit of tweaking in 3.0 and earlier.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d8091fda
    • Christoph Hellwig's avatar
      xfs: avoid synchronous transactions when deleting attr blocks · bf3673c5
      Christoph Hellwig authored
      commit 859f57ca upstream.
      
      [slightly different from the upstream version because of a previous cleanup]
      
      Currently xfs_attr_inactive causes a synchronous transactions if we are
      removing a file that has any extents allocated to the attribute fork, and
      thus makes XFS extremely slow at removing files with out of line extended
      attributes. The code looks a like a relict from the days before the busy
      extent list, but with the busy extent list we avoid reusing data and attr
      extents that have been freed but not commited yet, so this code is just
      as superflous as the synchronous transactions for data blocks.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reported-by: default avatarBernd Schubert <bernd.schubert@itwm.fraunhofer.de>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      bf3673c5
    • Christoph Hellwig's avatar
      xfs: fix nfs export of 64-bit inodes numbers on 32-bit kernels · 898726cb
      Christoph Hellwig authored
      commit c29f7d45 upstream.
      
      The i_ino field in the VFS inode is of type unsigned long and thus can't
      hold the full 64-bit inode number on 32-bit kernels.  We have the full
      inode number in the XFS inode, so use that one for nfs exports.  Note
      that I've also switched the 32-bit file handles types to it, just to make
      the code more consistent and copy & paste errors less likely to happen.
      Reported-by: default avatarGuoquan Yang <ygq51@hotmail.com>
      Reported-by: default avatarHank Peng <pengxihan@gmail.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarBen Myers <bpm@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      898726cb
    • Jean Delvare's avatar
      hwmon: (coretemp) Fix oops on CPU offlining · ccd5790e
      Jean Delvare authored
      This is for stable kernel branch 3.0 only. Previous and later versions
      have different code paths and are not affected by this bug.
      
      This is the same fix as "hwmon: (coretemp) Fix oops on driver load"
      but for the CPU offlining case. Sorry for missing it at first.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Durgadoss R <durgadoss.r@intel.com>
      Acked-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ccd5790e
    • Phillip Lougher's avatar
      hfs: fix hfs_find_init() sb->ext_tree NULL ptr oops · 70f2545d
      Phillip Lougher authored
      commit 434a964d upstream.
      
      Clement Lecigne reports a filesystem which causes a kernel oops in
      hfs_find_init() trying to dereference sb->ext_tree which is NULL.
      
      This proves to be because the filesystem has a corrupted MDB extent
      record, where the extents file does not fit into the first three extents
      in the file record (the first blocks).
      
      In hfs_get_block() when looking up the blocks for the extent file
      (HFS_EXT_CNID), it fails the first blocks special case, and falls
      through to the extent code (which ultimately calls hfs_find_init())
      which is in the process of being initialised.
      
      Hfs avoids this scenario by always having the extents b-tree fitting
      into the first blocks (the extents B-tree can't have overflow extents).
      
      The fix is to check at mount time that the B-tree fits into first
      blocks, i.e.  fail if HFS_I(inode)->alloc_blocks >=
      HFS_I(inode)->first_blocks
      
      Note, the existing commit 47f365eb ("hfs: fix oops on mount with
      corrupted btree extent records") becomes subsumed into this as a special
      case, but only for the extents B-tree (HFS_EXT_CNID), it is perfectly
      acceptable for the catalog B-Tree file to grow beyond three extents,
      with the remaining extent descriptors in the extents overfow.
      
      This fixes CVE-2011-2203
      Reported-by: default avatarClement LECIGNE <clement.lecigne@netasq.com>
      Signed-off-by: default avatarPhillip Lougher <plougher@redhat.com>
      Cc: Jeff Mahoney <jeffm@suse.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Cc: Moritz Mühlenhoff <jmm@inutil.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      70f2545d
    • Linus Torvalds's avatar
      Make TASKSTATS require root access · b2c51348
      Linus Torvalds authored
      commit 1a51410a upstream.
      
      Ok, this isn't optimal, since it means that 'iotop' needs admin
      capabilities, and we may have to work on this some more.  But at the
      same time it is very much not acceptable to let anybody just read
      anybody elses IO statistics quite at this level.
      
      Use of the GENL_ADMIN_PERM suggested by Johannes Berg as an alternative
      to checking the capabilities by hand.
      Reported-by: default avatarVasiliy Kulikov <segoon@openwall.com>
      Cc: Johannes Berg <johannes.berg@intel.com>
      Acked-by: default avatarBalbir Singh <bsingharora@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Cc: Moritz Mühlenhoff <jmm@inutil.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b2c51348
    • Eryu Guan's avatar
      jbd/jbd2: validate sb->s_first in journal_get_superblock() · b98eb430
      Eryu Guan authored
      commit 8762202d upstream.
      
      I hit a J_ASSERT(blocknr != 0) failure in cleanup_journal_tail() when
      mounting a fsfuzzed ext3 image. It turns out that the corrupted ext3
      image has s_first = 0 in journal superblock, and the 0 is passed to
      journal->j_head in journal_reset(), then to blocknr in
      cleanup_journal_tail(), in the end the J_ASSERT failed.
      
      So validate s_first after reading journal superblock from disk in
      journal_get_superblock() to ensure s_first is valid.
      
      The following script could reproduce it:
      
      fstype=ext3
      blocksize=1024
      img=$fstype.img
      offset=0
      found=0
      magic="c0 3b 39 98"
      
      dd if=/dev/zero of=$img bs=1M count=8
      mkfs -t $fstype -b $blocksize -F $img
      filesize=`stat -c %s $img`
      while [ $offset -lt $filesize ]
      do
              if od -j $offset -N 4 -t x1 $img | grep -i "$magic";then
                      echo "Found journal: $offset"
                      found=1
                      break
              fi
              offset=`echo "$offset+$blocksize" | bc`
      done
      
      if [ $found -ne 1 ];then
              echo "Magic \"$magic\" not found"
              exit 1
      fi
      
      dd if=/dev/zero of=$img seek=$(($offset+23)) conv=notrunc bs=1 count=1
      
      mkdir -p ./mnt
      mount -o loop $img ./mnt
      
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: default avatarEryu Guan <guaneryu@gmail.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Moritz Mühlenhoff <jmm@inutil.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b98eb430