1. 22 Sep, 2014 1 commit
    • Anton Altaparmakov's avatar
      Fix nasty 32-bit overflow bug in buffer i/o code. · f2d5a944
      Anton Altaparmakov authored
      On 32-bit architectures, the legacy buffer_head functions are not always
      handling the sector number with the proper 64-bit types, and will thus
      fail on 4TB+ disks.
      
      Any code that uses __getblk() (and thus bread(), breadahead(),
      sb_bread(), sb_breadahead(), sb_getblk()), and calls it using a 64-bit
      block on a 32-bit arch (where "long" is 32-bit) causes an inifinite loop
      in __getblk_slow() with an infinite stream of errors logged to dmesg
      like this:
      
        __find_get_block_slow() failed. block=6740375944, b_blocknr=2445408648
        b_state=0x00000020, b_size=512
        device sda1 blocksize: 512
      
      Note how in hex block is 0x191C1F988 and b_blocknr is 0x91C1F988 i.e. the
      top 32-bits are missing (in this case the 0x1 at the top).
      
      This is because grow_dev_page() is broken and has a 32-bit overflow due
      to shifting the page index value (a pgoff_t - which is just 32 bits on
      32-bit architectures) left-shifted as the block number.  But the top
      bits to get lost as the pgoff_t is not type cast to sector_t / 64-bit
      before the shift.
      
      This patch fixes this issue by type casting "index" to sector_t before
      doing the left shift.
      
      Note this is not a theoretical bug but has been seen in the field on a
      4TiB hard drive with logical sector size 512 bytes.
      
      This patch has been verified to fix the infinite loop problem on 3.17-rc5
      kernel using a 4TB disk image mounted using "-o loop".  Without this patch
      doing a "find /nt" where /nt is an NTFS volume causes the inifinite loop
      100% reproducibly whilst with the patch it works fine as expected.
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f2d5a944
  2. 21 Sep, 2014 3 commits
    • Linus Torvalds's avatar
      Linux 3.17-rc6 · 0f33be00
      Linus Torvalds authored
      0f33be00
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · dae0af78
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
       "Fixes for ARM, the most notable being the fix from Nathan Lynch to fix
        the state of various registers during execve, to ensure that data
        can't be leaked between two executables.
      
        Fixes from Victor Kamensky for get_user() on big endian platforms,
        since the addition of 8-byte get_user() support broke these fairly
        badly.
      
        A fix from Sudeep Holla for affinity setting when hotplugging CPU 0.
      
        A fix from Stephen Boyd for a perf-induced sleep attempt while atomic.
      
        Lastly, a correctness fix for emulation of the SWP instruction on
        ARMv7+, and a fix for wrong carry handling when updating the
        translation table base address on LPAE platforms"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: 8149/1: perf: Don't sleep while atomic when enabling per-cpu interrupts
        ARM: 8148/1: flush TLS and thumbee register state during exec
        ARM: 8151/1: add missing exports for asm functions required by get_user macro
        ARM: 8137/1: fix get_user BE behavior for target variable with size of 8 bytes
        ARM: 8135/1: Fix in-correct barrier usage in SWP{B} emulation
        ARM: 8133/1: use irq_set_affinity with force=false when migrating irqs
        ARM: 8132/1: LPAE: drop wrong carry flag correction after adding TTBR1_OFFSET
      dae0af78
    • Linus Torvalds's avatar
      Merge tag 'media-v3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · c1f03b48
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "some media bug fixes:
         - a Kconfig dependency issue
         - some fixes for af9033/it913x demod to be more reliable and address
           a performance regression
         - cx18: fix an oops on devices with tda8290 tuner
         - two new USB IDs for af9035
         - a couple fixes on smapp driver"
      
      * tag 'media-v3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] af9035: new IDs: add support for PCTV 78e and PCTV 79e
        [media] af9033: feed clock to RF tuner
        [media] it913x: init tuner on attach
        [media] af9033: update IT9135 tuner inittabs
        [media] Kconfig: do not select SPI bus on sub-driver auto-select
        [media] cx18: fix kernel oops with tda8290 tuner
        [media] smiapp: Set sub-device owner
        [media] smiapp: Fix power count handling
      c1f03b48
  3. 20 Sep, 2014 8 commits
  4. 19 Sep, 2014 21 commits
  5. 18 Sep, 2014 7 commits