1. 02 Sep, 2014 1 commit
    • Chao Yu's avatar
      f2fs: reposition unlock_new_inode to prevent accessing invalid inode · b73e5282
      Chao Yu authored
      As the race condition on the inode cache, following scenario can appear:
      [Thread a]				[Thread b]
      					->f2fs_mkdir
      					  ->f2fs_add_link
      					    ->__f2fs_add_link
      					      ->init_inode_metadata failed here
      ->gc_thread_func
        ->f2fs_gc
          ->do_garbage_collect
            ->gc_data_segment
              ->f2fs_iget
                ->iget_locked
                  ->wait_on_inode
      					  ->unlock_new_inode
              ->move_data_page
      					  ->make_bad_inode
      					  ->iput
      
      When we fail in create/symlink/mkdir/mknod/tmpfile, the new allocated inode
      should be set as bad to avoid being accessed by other thread. But in above
      scenario, it allows f2fs to access the invalid inode before this inode was set
      as bad.
      This patch fix the potential problem, and this issue was found by code review.
      
      change log from v1:
       o Add condition judgment in gc_data_segment() suggested by Changman Lee.
       o use iget_failed to simplify code.
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      b73e5282
  2. 29 Aug, 2014 1 commit
  3. 28 Aug, 2014 1 commit
  4. 25 Aug, 2014 1 commit
  5. 22 Aug, 2014 1 commit
  6. 21 Aug, 2014 14 commits
  7. 19 Aug, 2014 17 commits
  8. 18 Aug, 2014 2 commits
    • NeilBrown's avatar
      md/raid6: avoid data corruption during recovery of double-degraded RAID6 · 9c4bdf69
      NeilBrown authored
      During recovery of a double-degraded RAID6 it is possible for
      some blocks not to be recovered properly, leading to corruption.
      
      If a write happens to one block in a stripe that would be written to a
      missing device, and at the same time that stripe is recovering data
      to the other missing device, then that recovered data may not be written.
      
      This patch skips, in the double-degraded case, an optimisation that is
      only safe for single-degraded arrays.
      
      Bug was introduced in 2.6.32 and fix is suitable for any kernel since
      then.  In an older kernel with separate handle_stripe5() and
      handle_stripe6() functions the patch must change handle_stripe6().
      
      Cc: stable@vger.kernel.org (2.6.32+)
      Fixes: 6c0069c0
      Cc: Yuri Tikhonov <yur@emcraft.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Reported-by: default avatar"Manibalan P" <pmanibalan@amiindia.co.in>
      Tested-by: default avatar"Manibalan P" <pmanibalan@amiindia.co.in>
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1090423Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Acked-by: default avatarDan Williams <dan.j.williams@intel.com>
      9c4bdf69
    • NeilBrown's avatar
      md/raid5: avoid livelock caused by non-aligned writes. · a40687ff
      NeilBrown authored
      If a stripe in a raid6 array received a write to each data block while
      the array is degraded, and if any of these writes to a missing device
      are not page-aligned, then a live-lock happens.
      
      In this case the P and Q blocks need to be read so that the part of
      the missing block which is *not* being updated by the write can be
      constructed.  Due to a logic error, these blocks are not loaded, so
      the update cannot proceed and the stripe is 'handled' repeatedly in an
      infinite loop.
      
      This bug is unlikely as most writes are page aligned.  However as it
      can lead to a livelock it is suitable for -stable.  It was introduced
      in 3.16.
      
      Cc: stable@vger.kernel.org (v3.16)
      Fixed: 67f45548Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a40687ff
  9. 16 Aug, 2014 2 commits
    • Linus Torvalds's avatar
      Linux 3.17-rc1 · 7d1311b9
      Linus Torvalds authored
      7d1311b9
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · 605f884d
      Linus Torvalds authored
      Pull x86 platform driver updates from Matthew Garrett:
       "A moderate number of changes, but nothing awfully significant.
      
        A lot of const cleanups, some reworking and additions to the rfkill
        quirks in the asus driver, a new driver for generating falling laptop
        events on Toshibas and some misc fixes.
      
        Maybe vendors have stopped inventing things"
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: (41 commits)
        platform/x86: Enable build support for toshiba_haps
        Documentation: Add file about toshiba_haps module
        platform/x86: Toshiba HDD Active Protection Sensor
        asus-nb-wmi: Add wapf4 quirk for the U32U
        alienware-wmi: make hdmi_mux enabled on case-by-case basis
        ideapad-laptop: Constify DMI table and other r/o variables
        asus-nb-wmi.c: Rename x401u quirk to wapf4
        compal-laptop: correct invalid hwmon name
        toshiba_acpi: Add Qosmio X75-A to the alt keymap dmi list
        toshiba_acpi: Add extra check to backlight code
        Fix log message about future removal of interface
        ideapad-laptop: Disable touchpad interface on Yoga models
        asus-nb-wmi: Add wapf4 quirk for the X550CC
        intel_ips: Make ips_mcp_limits variables static
        thinkpad_acpi: Mark volume_alsa_control_{vol,mute} as __initdata
        fujitsu-laptop: Mark fujitsu_dmi_table[] DMI table as __initconst
        hp-wmi: Add missing __init annotations to initialization code
        hp_accel: Constify ACPI and DMI tables
        fujitsu-tablet: Mark DMI callbacks as __init code
        dell-laptop: Mark dell_quirks[] DMI table as __initconst
        ...
      605f884d