1. 10 Feb, 2012 1 commit
  2. 08 Feb, 2012 8 commits
    • Dave Young's avatar
      loop: zero fill bio instead of return -EIO for partial read · 306df071
      Dave Young authored
      commit 8268f5a7 ("deny partial write for loop dev fd") tried to fix the
      loop device partial read information leak problem.  But it changed the
      semantics of read behavior.  When we read beyond the end of the device we
      should get 0 bytes, which is normal behavior, we should not just return
      -EIO
      
      Instead of returning -EIO, zero out the bio to avoid information leak in
      case of partail read.
      Signed-off-by: default avatarDave Young <dyoung@redhat.com>
      Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Tested-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Cc: Dmitry Monakhov <dmonakhov@sw.ru>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      306df071
    • Kent Overstreet's avatar
      bio: don't overflow in bio_get_nr_vecs() · 5abebfdd
      Kent Overstreet authored
      There were two places bio_get_nr_vecs() could overflow:
      
      First, it did a left shift to convert from sectors to bytes immediately
      before dividing by PAGE_SIZE.  If PAGE_SIZE ever was less than 512 a great
      many things would break, so dividing by PAGE_SIZE >> 9 is safe and will
      generate smaller code too.
      
      The nastier overflow was in the DIV_ROUND_UP() (that's what the code was
      effectively doing, anyways).  If n + d overflowed, the whole thing would
      return 0 which breaks things rather effectively.
      
      bio_get_nr_vecs() doesn't claim to give an exact value anyways, so the
      DIV_ROUND_UP() is silly; we could do a straight divide except if a
      device's queue_max_sectors was less than PAGE_SIZE we'd return 0.  So we
      just add 1; this should always be safe - things will break badly if
      bio_get_nr_vecs() returns > BIO_MAX_PAGES (bio_alloc() will suddenly start
      failing) but it's queue_max_segments that must guard against this, if
      queue_max_sectors is preventing this from happen things are going to
      explode on architectures with different PAGE_SIZE.
      Signed-off-by: default avatarKent Overstreet <koverstreet@google.com>
      Cc: Tejun Heo <tj@kernel.org>
      Acked-by: default avatarValdis Kletnieks <Valdis.Kletnieks@vt.edu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      5abebfdd
    • Vivek Goyal's avatar
      floppy: Fix a crash during rmmod · 4609dff6
      Vivek Goyal authored
      floppy driver does not call add_disk() on all the drives hence we don't take
      gendisk reference on request queue for these drives. Don't call put_disk()
      with disk->queue set, otherwise we try to put the reference we never took.
      Reported-and-tested-by: default avatarDirk Gouders <gouders@et.bocholt.fh-gelsenkirchen.de>
      Signed-off-by: Vivek Goyal<vgoyal@redhat.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      4609dff6
    • Vivek Goyal's avatar
      floppy: Cleanup disk->queue before caling put_disk() if add_disk() was never called · 3f9a5aab
      Vivek Goyal authored
      add_disk() takes gendisk reference on request queue. If driver failed during
      initialization and never called add_disk() then that extra reference is not
      taken. That reference is put in put_disk(). floppy driver allocates the
      disk, allocates queue, sets disk->queue and then relizes that floppy
      controller is not present. It tries to tear down everything and tries to
      put a reference down in put_disk() which was never taken.
      
      In such error cases cleanup disk->queue before calling put_disk() so that
      we never try to put down a reference which was never taken in first place.
      Reported-and-tested-by: default avatarSuresh Jayaraman <sjayaraman@suse.com>
      Tested-by: default avatarDirk Gouders <gouders@et.bocholt.fh-gelsenkirchen.de>
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      3f9a5aab
    • Paolo Bonzini's avatar
      cdrom: move shared static to cdrom_device_info · cdccaa94
      Paolo Bonzini authored
      The keeplocked variable in the cdrom driver is shared across multiple
      drives, but set in per-device ioctls.  Move it to the per-device struct,
      avoiding that the setting on one drive affects the driver's behavior
      when closing another.
      
      [ Impact: limit udev's confusion to one drive when a CD burning program
        unlocks the CD door at the end of burning. ]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      cdccaa94
    • Stanislaw Gruszka's avatar
      bsg: fix sysfs link remove warning · 37b40adf
      Stanislaw Gruszka authored
      We create "bsg" link if q->kobj.sd is not NULL, so remove it only
      when the same condition is true.
      
      Fixes:
      
      WARNING: at fs/sysfs/inode.c:323 sysfs_hash_and_remove+0x2b/0x77()
      sysfs: can not remove 'bsg', no directory
      Call Trace:
        [<c0429683>] warn_slowpath_common+0x6a/0x7f
        [<c0537a68>] ? sysfs_hash_and_remove+0x2b/0x77
        [<c042970b>] warn_slowpath_fmt+0x2b/0x2f
        [<c0537a68>] sysfs_hash_and_remove+0x2b/0x77
        [<c053969a>] sysfs_remove_link+0x20/0x23
        [<c05d88f1>] bsg_unregister_queue+0x40/0x6d
        [<c0692263>] __scsi_remove_device+0x31/0x9d
        [<c069149f>] scsi_forget_host+0x41/0x52
        [<c0689fa9>] scsi_remove_host+0x71/0xe0
        [<f7de5945>] quiesce_and_remove_host+0x51/0x83 [usb_storage]
        [<f7de5a1e>] usb_stor_disconnect+0x18/0x22 [usb_storage]
        [<c06c29de>] usb_unbind_interface+0x4e/0x109
        [<c067a80f>] __device_release_driver+0x6b/0xa6
        [<c067a861>] device_release_driver+0x17/0x22
        [<c067a46a>] bus_remove_device+0xd6/0xe6
        [<c06785e2>] device_del+0xf2/0x137
        [<c06c101f>] usb_disable_device+0x94/0x1a0
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      37b40adf
    • Tejun Heo's avatar
      block: don't call elevator callbacks for plug merges · 07c2bd37
      Tejun Heo authored
      Plug merge calls two elevator callbacks outside queue lock -
      elevator_allow_merge_fn() and elevator_bio_merged_fn().  Although
      attempt_plug_merge() suggests that elevator is guaranteed to be there
      through the existing request on the plug list, nothing prevents plug
      merge from calling into dying or initializing elevator.
      
      For regular merges, bypass ensures elvpriv count to reach zero, which
      in turn prevents merges as all !ELVPRIV requests get REQ_SOFTBARRIER
      from forced back insertion.  Plug merge doesn't check ELVPRIV, and, as
      the requests haven't gone through elevator insertion yet, it doesn't
      have SOFTBARRIER set allowing merges on a bypassed queue.
      
      This, for example, leads to the following crash during elevator
      switch.
      
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
       IP: [<ffffffff813b34e9>] cfq_allow_merge+0x49/0xa0
       PGD 112cbc067 PUD 115d5c067 PMD 0
       Oops: 0000 [#1] PREEMPT SMP
       CPU 1
       Modules linked in: deadline_iosched
      
       Pid: 819, comm: dd Not tainted 3.3.0-rc2-work+ #76 Bochs Bochs
       RIP: 0010:[<ffffffff813b34e9>]  [<ffffffff813b34e9>] cfq_allow_merge+0x49/0xa0
       RSP: 0018:ffff8801143a38f8  EFLAGS: 00010297
       RAX: 0000000000000000 RBX: ffff88011817ce28 RCX: ffff880116eb6cc0
       RDX: 0000000000000000 RSI: ffff880118056e20 RDI: ffff8801199512f8
       RBP: ffff8801143a3908 R08: 0000000000000000 R09: 0000000000000000
       R10: 0000000000000001 R11: 0000000000000000 R12: ffff880118195708
       R13: ffff880118052aa0 R14: ffff8801143a3d50 R15: ffff880118195708
       FS:  00007f19f82cb700(0000) GS:ffff88011fc80000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
       CR2: 0000000000000008 CR3: 0000000112c6a000 CR4: 00000000000006e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
       Process dd (pid: 819, threadinfo ffff8801143a2000, task ffff880116eb6cc0)
       Stack:
        ffff88011817ce28 ffff880118195708 ffff8801143a3928 ffffffff81391bba
        ffff88011817ce28 ffff880118195708 ffff8801143a3948 ffffffff81391bf1
        ffff88011817ce28 0000000000000000 ffff8801143a39a8 ffffffff81398e3e
       Call Trace:
        [<ffffffff81391bba>] elv_rq_merge_ok+0x4a/0x60
        [<ffffffff81391bf1>] elv_try_merge+0x21/0x40
        [<ffffffff81398e3e>] blk_queue_bio+0x8e/0x390
        [<ffffffff81396a5a>] generic_make_request+0xca/0x100
        [<ffffffff81396b04>] submit_bio+0x74/0x100
        [<ffffffff811d45c2>] __blockdev_direct_IO+0x1ce2/0x3450
        [<ffffffff811d0dc7>] blkdev_direct_IO+0x57/0x60
        [<ffffffff811460b5>] generic_file_aio_read+0x6d5/0x760
        [<ffffffff811986b2>] do_sync_read+0xe2/0x120
        [<ffffffff81199345>] vfs_read+0xc5/0x180
        [<ffffffff81199501>] sys_read+0x51/0x90
        [<ffffffff81aeac12>] system_call_fastpath+0x16/0x1b
      
      There are multiple ways to fix this including making plug merge check
      ELVPRIV; however,
      
      * Calling into elevator outside queue lock is confusing and
        error-prone.
      
      * Requests on plug list aren't known to the elevator.  They aren't on
        the elevator yet, so there's no elevator specific state to update.
      
      * Given the nature of plug merges - collecting bio's for the same
        purpose from the same issuer - elevator specific restrictions aren't
        applicable.
      
      So, simply don't call into elevator methods from plug merge by moving
      elv_bio_merged() from bio_attempt_*_merge() to blk_queue_bio(), and
      using blk_try_merge() in attempt_plug_merge().
      
      This is based on Jens' patch to skip elevator_allow_merge_fn() from
      plug merge.
      
      Note that this makes per-cgroup merged stats skip plug merging.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      LKML-Reference: <4F16F3CA.90904@kernel.dk>
      Original-patch-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      07c2bd37
    • Tejun Heo's avatar
      block: separate out blk_rq_merge_ok() and blk_try_merge() from elevator functions · 050c8ea8
      Tejun Heo authored
      blk_rq_merge_ok() is the elevator-neutral part of merge eligibility
      test.  blk_try_merge() determines merge direction and expects the
      caller to have tested elv_rq_merge_ok() previously.
      
      elv_rq_merge_ok() now wraps blk_rq_merge_ok() and then calls
      elv_iosched_allow_merge().  elv_try_merge() is removed and the two
      callers are updated to call elv_rq_merge_ok() explicitly followed by
      blk_try_merge().  While at it, make rq_merge_ok() functions return
      bool.
      
      This is to prepare for plug merge update and doesn't introduce any
      behavior change.
      
      This is based on Jens' patch to skip elevator_allow_merge_fn() from
      plug merge.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      LKML-Reference: <4F16F3CA.90904@kernel.dk>
      Original-patch-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      050c8ea8
  3. 07 Feb, 2012 2 commits
  4. 06 Feb, 2012 2 commits
    • Dan Carpenter's avatar
      cdrom: use copy_to_user() without the underscores · 822bfa51
      Dan Carpenter authored
      "nframes" comes from the user and "nframes * CD_FRAMESIZE_RAW" can wrap
      on 32 bit systems.  That would have been ok if we used the same wrapped
      value for the copy, but we use a shifted value.  We should just use the
      checked version of copy_to_user() because it's not going to make a
      difference to the speed.
      
      Cc: stable@vger.kernel.com
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      822bfa51
    • Shaohua Li's avatar
      block: fix ioc locking warning · 9fa73472
      Shaohua Li authored
      Meelis reported a warning:
      
      WARNING: at kernel/timer.c:1122 run_timer_softirq+0x199/0x1ec()
      Hardware name: 939Dual-SATA2
      timer: cfq_idle_slice_timer+0x0/0xaa preempt leak: 00000102 -> 00000103
      Modules linked in: sr_mod cdrom videodev media drm_kms_helper ohci_hcd ehci_hcd v4l2_compat_ioctl32 usbcore i2c_ali15x3 snd_seq drm snd_timer snd_seq
      Pid: 0, comm: swapper Not tainted 3.3.0-rc2-00110-gd1256667 #176
      Call Trace:
       <IRQ>  [<ffffffff81022aaa>] warn_slowpath_common+0x7e/0x96
       [<ffffffff8114c485>] ? cfq_slice_expired+0x1d/0x1d
       [<ffffffff81022b56>] warn_slowpath_fmt+0x41/0x43
       [<ffffffff8114c526>] ? cfq_idle_slice_timer+0xa1/0xaa
       [<ffffffff8114c485>] ? cfq_slice_expired+0x1d/0x1d
       [<ffffffff8102c124>] run_timer_softirq+0x199/0x1ec
       [<ffffffff81047a53>] ? timekeeping_get_ns+0x12/0x31
       [<ffffffff810145fd>] ? apic_write+0x11/0x13
       [<ffffffff81027475>] __do_softirq+0x74/0xfa
       [<ffffffff812f337a>] call_softirq+0x1a/0x30
       [<ffffffff81002ff9>] do_softirq+0x31/0x68
       [<ffffffff810276cf>] irq_exit+0x3d/0xa3
       [<ffffffff81014aca>] smp_apic_timer_interrupt+0x6b/0x77
       [<ffffffff812f2de9>] apic_timer_interrupt+0x69/0x70
       <EOI>  [<ffffffff81040136>] ? sched_clock_cpu+0x73/0x7d
       [<ffffffff81040136>] ? sched_clock_cpu+0x73/0x7d
       [<ffffffff8100801f>] ? default_idle+0x1e/0x32
       [<ffffffff81008019>] ? default_idle+0x18/0x32
       [<ffffffff810008b1>] cpu_idle+0x87/0xd1
       [<ffffffff812de861>] rest_init+0x85/0x89
       [<ffffffff81659a4d>] start_kernel+0x2eb/0x2f8
       [<ffffffff8165926e>] x86_64_start_reservations+0x7e/0x82
       [<ffffffff81659362>] x86_64_start_kernel+0xf0/0xf7
      
      this_q == locked_q is possible. There are two problems here:
      1. In UP case, there is preemption counter issue as spin_trylock always
      successes.
      2. In SMP case, the loop breaks too earlier.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      Reported-by: default avatarMeelis Roos <mroos@linux.ee>
      Reported-by: default avatarKnut Petersen <Knut_Petersen@t-online.de>
      Tested-by: default avatarKnut Petersen <Knut_Petersen@t-online.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      9fa73472
  5. 19 Jan, 2012 4 commits
    • Shaohua Li's avatar
      block: fix NULL icq_cache reference · 05c30b95
      Shaohua Li authored
      Vivek reported a kernel crash:
      [   94.217015] BUG: unable to handle kernel NULL pointer dereference at 000000000000001c
      [   94.218004] IP: [<ffffffff81142fae>] kmem_cache_free+0x5e/0x200
      [   94.218004] PGD 13abda067 PUD 137d52067 PMD 0
      [   94.218004] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
      [   94.218004] CPU 0
      [   94.218004] Modules linked in: [last unloaded: scsi_wait_scan]
      [   94.218004]
      [   94.218004] Pid: 0, comm: swapper/0 Not tainted 3.2.0+ #16 Hewlett-Packard HP xw6600 Workstation/0A9Ch
      [   94.218004] RIP: 0010:[<ffffffff81142fae>]  [<ffffffff81142fae>] kmem_cache_free+0x5e/0x200
      [   94.218004] RSP: 0018:ffff88013fc03de0  EFLAGS: 00010006
      [   94.218004] RAX: ffffffff81e0d020 RBX: ffff880138b3c680 RCX: 00000001801c001b
      [   94.218004] RDX: 00000000003aac1d RSI: ffff880138b3c680 RDI: ffffffff81142fae
      [   94.218004] RBP: ffff88013fc03e10 R08: ffff880137830238 R09: 0000000000000001
      [   94.218004] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      [   94.218004] R13: ffffea0004e2cf00 R14: ffffffff812f6eb6 R15: 0000000000000246
      [   94.218004] FS:  0000000000000000(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000
      [   94.218004] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [   94.218004] CR2: 000000000000001c CR3: 00000001395ab000 CR4: 00000000000006f0
      [   94.218004] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   94.218004] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [   94.218004] Process swapper/0 (pid: 0, threadinfo ffffffff81e00000, task ffffffff81e0d020)
      [   94.218004] Stack:
      [   94.218004]  0000000000000102 ffff88013fc0db20 ffffffff81e22700 ffff880139500f00
      [   94.218004]  0000000000000001 000000000000000a ffff88013fc03e20 ffffffff812f6eb6
      [   94.218004]  ffff88013fc03e90 ffffffff810c8da2 ffffffff81e01fd8 ffff880137830240
      [   94.218004] Call Trace:
      [   94.218004]  <IRQ>
      [   94.218004]  [<ffffffff812f6eb6>] icq_free_icq_rcu+0x16/0x20
      [   94.218004]  [<ffffffff810c8da2>] __rcu_process_callbacks+0x1c2/0x420
      [   94.218004]  [<ffffffff810c9038>] rcu_process_callbacks+0x38/0x250
      [   94.218004]  [<ffffffff810405ee>] __do_softirq+0xce/0x3e0
      [   94.218004]  [<ffffffff8108ed04>] ? clockevents_program_event+0x74/0x100
      [   94.218004]  [<ffffffff81090104>] ? tick_program_event+0x24/0x30
      [   94.218004]  [<ffffffff8183ed1c>] call_softirq+0x1c/0x30
      [   94.218004]  [<ffffffff8100422d>] do_softirq+0x8d/0xc0
      [   94.218004]  [<ffffffff81040c3e>] irq_exit+0xae/0xe0
      [   94.218004]  [<ffffffff8183f4be>] smp_apic_timer_interrupt+0x6e/0x99
      [   94.218004]  [<ffffffff8183e330>] apic_timer_interrupt+0x70/0x80
      
      Once a queue is quiesced, it's not supposed to have any elvpriv data or
      icq's, and elevator switching depends on that.  Request alloc path
      followed the rule for elvpriv data but forgot apply it to icq's
      leading to the following crash during elevator switch. Fix it by not
      allocating icq's if ELVPRIV is not set for the request.
      Reported-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Tested-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      05c30b95
    • Shaohua Li's avatar
      block,cfq: change code order · df0793ab
      Shaohua Li authored
      cfq_slice_expired will change saved_workload_slice. It should be called
      first so saved_workload_slice is correctly set to 0 after workload type
      is changed.
      This fixes the code order changed by 54b466e4.
      Tested-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      df0793ab
    • Linus Torvalds's avatar
      uml: fix compile for x86-64 · 90a4c0f5
      Linus Torvalds authored
      Randy Dunlap reports that we get
      
        arch/x86/um/shared/sysdep/ptrace.h:7:20: error: redefinition of 'regs_return_value'
        arch/x86/um/shared/sysdep/ptrace.h:7:20: note: previous definition of 'regs_return_value' was here
      
      when compiling UML for x86-64.
      
      Stephen Rothwell root-caused it and says:
      
       "Caused by commit d7e7528b ("Audit: push audit success and retcode
        into arch ptrace.h") (another patch that was never in linux-next :-().
      
        This file now needs protection against double inclusion."
      
      so let's do as the man says.
      Reported-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Analyzed-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      90a4c0f5
    • Linus Torvalds's avatar
      f59e842f
  6. 18 Jan, 2012 23 commits
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 4ba3069f
      Linus Torvalds authored
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (26 commits)
        target: Set additional sense length field in sense data
        target: Remove legacy device status check from transport_execute_tasks
        target: Remove __transport_execute_tasks() for each processing context
        target: Remove extra se_device->execute_task_lock access in fast path
        target: Drop se_device TCQ queue_depth usage from I/O path
        target: Fix possible NULL pointer with __transport_execute_tasks
        target: Remove TFO->check_release_cmd() fabric API caller
        tcm_fc: Convert ft_send_work to use target_submit_cmd
        target: Add target_submit_cmd() for process context fabric submission
        target: Make target_put_sess_cmd use target_release_cmd_kref
        target: Set response format in INQUIRY response
        target: tcm_mod_builder: small fixups
        Documentation/target: Fix tcm_mod_builder.py build breakage
        target: remove overagressive ____cacheline_aligned annoations
        tcm_loop: bump max_sectors
        target/configs: remove trailing newline from udev_path and alias
        iscsi-target: fix chap identifier simple_strtoul usage
        target: remove useless casts
        target: simplify target_check_cdb_and_preempt
        target: Move core_scsi3_check_cdb_abort_and_preempt
        ...
      4ba3069f
    • Linus Torvalds's avatar
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux · 507a03c1
      Linus Torvalds authored
      This includes initial support for the recently published ACPI 5.0 spec.
      In particular, support for the "hardware-reduced" bit that eliminates
      the dependency on legacy hardware.
      
      APEI has patches resulting from testing on real hardware.
      
      Plus other random fixes.
      
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: (52 commits)
        acpi/apei/einj: Add extensions to EINJ from rev 5.0 of acpi spec
        intel_idle: Split up and provide per CPU initialization func
        ACPI processor: Remove unneeded variable passed by acpi_processor_hotadd_init V2
        ACPI processor: Remove unneeded cpuidle_unregister_driver call
        intel idle: Make idle driver more robust
        intel_idle: Fix a cast to pointer from integer of different size warning in intel_idle
        ACPI: kernel-parameters.txt : Add intel_idle.max_cstate
        intel_idle: remove redundant local_irq_disable() call
        ACPI processor: Fix error path, also remove sysdev link
        ACPI: processor: fix acpi_get_cpuid for UP processor
        intel_idle: fix API misuse
        ACPI APEI: Convert atomicio routines
        ACPI: Export interfaces for ioremapping/iounmapping ACPI registers
        ACPI: Fix possible alignment issues with GAS 'address' references
        ACPI, ia64: Use SRAT table rev to use 8bit or 16/32bit PXM fields (ia64)
        ACPI, x86: Use SRAT table rev to use 8bit or 32bit PXM fields (x86/x86-64)
        ACPI: Store SRAT table revision
        ACPI, APEI, Resolve false conflict between ACPI NVS and APEI
        ACPI, Record ACPI NVS regions
        ACPI, APEI, EINJ, Refine the fix of resource conflict
        ...
      507a03c1
    • Stefan Berger's avatar
      tpm: fix (ACPI S3) suspend regression · be405411
      Stefan Berger authored
      This patch fixes an (ACPI S3) suspend regression introduced in commit
      68d6e671 ("tpm: Introduce function to poll for result of self test")
      and occurring with an Infineon TPM and tpm_tis and tpm_infineon drivers
      active.
      
      The suspend problem occurred if the TPM was disabled and/or deactivated
      and therefore the TPM_PCRRead checking the result of the (asynchronous)
      self test returned an error code which then caused the tpm_tis driver to
      become inactive and this then seemed to have negatively influenced the
      suspend support by the tpm_infineon driver...  Besides that the tpm_tis
      drive may stay active even if the TPM is disabled and/or deactivated.
      Signed-off-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
      Tested-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarRajiv Andrade <srajiv@linux.vnet.ibm.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      be405411
    • Linus Torvalds's avatar
      nvme: fix merge error due to change of 'make_request_fn' fn type · 93c3d65b
      Linus Torvalds authored
      The type of 'make_request_fn' changed in 5a7bbad2 ("block: remove
      support for bio remapping from ->make_request"), but the merge of the
      nvme driver didn't take that into account, and as a result the driver
      would compile with a warning:
      
        drivers/block/nvme.c: In function 'nvme_alloc_ns':
        drivers/block/nvme.c:1336:2: warning: passing argument 2 of 'blk_queue_make_request' from incompatible pointer type [enabled by default]
        include/linux/blkdev.h:830:13: note: expected 'void (*)(struct request_queue *, struct bio *)' but argument is of type 'int (*)(struct request_queue *, struct bio *)'
      
      It's benign, but the warning is annoying.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org>
      Cc: Matthew Wilcox <matthew.r.wilcox@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      93c3d65b
    • Stephen Rothwell's avatar
      xen: using EXPORT_SYMBOL requires including export.h · 9ef9b20b
      Stephen Rothwell authored
      Fix these warnings:
      
        drivers/xen/biomerge.c:14:1: warning: data definition has no type or storage class [enabled by default]
        drivers/xen/biomerge.c:14:1: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL' [-Wimplicit-int]
        drivers/xen/biomerge.c:14:1: warning: parameter names (without types) in function declaration [enabled by default]
      
      And this build error:
      
        ERROR: "xen_biovec_phys_mergeable" [drivers/block/nvme.ko] undefined!
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9ef9b20b
    • Linus Torvalds's avatar
      Merge branch 'for-linus/i2c-33' of git://git.fluff.org/bjdooks/linux · aa303f2c
      Linus Torvalds authored
      * 'for-linus/i2c-33' of git://git.fluff.org/bjdooks/linux:
        i2c-eg20t: Change-company-name-OKI-SEMICONDUCTOR to LAPIS Semiconductor
        i2c-eg20t: Support new device LAPIS Semiconductor ML7831 IOH
        i2c-eg20t: modified the setting of transfer rate.
        i2c-eg20t: use i2c_add_numbered_adapter to get a fixed bus number
        i2c: OMAP: Add DT support for i2c controller
        I2C: OMAP: NACK without STP
        I2C: OMAP: correct SYSC register offset for OMAP4
      aa303f2c
    • Linus Torvalds's avatar
      Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 4a7c1ff2
      Linus Torvalds authored
      * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (57 commits)
        [media] as3645a: Fix compilation by including slab.h
        [media] s5p-fimc: Remove linux/version.h include from fimc-mdevice.c
        [media] s5p-mfc: Remove linux/version.h include from s5p_mfc.c
        [media] ds3000: using logical && instead of bitwise &
        [media] v4l2-ctrls: make control names consistent
        [media] DVB: dib0700, add support for Nova-TD LEDs
        [media] DVB: dib0700, add corrected Nova-TD frontend_attach
        [media] DVB: dib0700, separate stk7070pd initialization
        [media] DVB: dib0700, move Nova-TD Stick to a separate set
        [media] : add MODULE_FIRMWARE to dib0700
        [media] DVB-CORE: remove superfluous DTV_CMDs
        [media] s5p-jpeg: adapt to recent videobuf2 changes
        [media] s5p-g2d: fixed a bug in controls setting function
        [media] s5p-mfc: Fix volatile controls setup
        [media] drivers/media/video/s5p-mfc/s5p_mfc.c: adjust double test
        [media] drivers/media/video/s5p-fimc/fimc-capture.c: adjust double test
        [media] s5p-fimc: Fix incorrect control ID assignment
        [media] dvb_frontend: Don't call get_frontend() if idle
        [media] DocBook/dvbproperty.xml: Remove DTV_MODULATION from ISDB-T
        [media] DocBook/dvbproperty.xml: Fix ISDB-T delivery system parameters
        ...
      4a7c1ff2
    • Linus Torvalds's avatar
      Merge branch 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 9278e634
      Linus Torvalds authored
      * 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: Wait for WM8993 FLL to stabilise
        ASoC: core - Free platform DAPM context at platform removal.
        ASoC: dapm - Fix check for codec context in dapm_power_widgets().
        ASoC: sgtl5000: update author email address
        ASoC: Fix DMA channel leak in imx-pcm-dma-mx2 driver.
      9278e634
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · d71f5be2
      Linus Torvalds authored
      SCSI updates on 20120118
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (49 commits)
        [SCSI] libfc: remove redundant timer init for fcp
        [SCSI] fcoe: Move fcoe_debug_logging from fcoe.h to fcoe.c
        [SCSI] libfc: Declare local functions static
        [SCSI] fcoe: fix regression on offload em matching function for initiator/target
        [SCSI] qla4xxx: Update driver version to 5.02.00-k12
        [SCSI] qla4xxx: Cleanup modinfo display
        [SCSI] qla4xxx: Update license
        [SCSI] qla4xxx: Clear the RISC interrupt bit during FW init
        [SCSI] qla4xxx: Added error logging for firmware abort
        [SCSI] qla4xxx: Disable generating pause frames in case of FW hung
        [SCSI] qla4xxx: Temperature monitoring for ISP82XX core.
        [SCSI] megaraid: fix sparse warnings
        [SCSI] sg: convert to kstrtoul_from_user()
        [SCSI] don't change sdev starvation list order without request dispatched
        [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state
        [SCSI] isci: fix start OOB
        [SCSI] isci: fix io failures while wide port links are coming up
        [SCSI] isci: allow more time for wide port targets
        [SCSI] isci: enable wide port targets
        [SCSI] isci: Fix IO fails when pull cable from phy in x4 wideport in MPC mode.
        ...
      d71f5be2
    • Linus Torvalds's avatar
      Merge git://git.infradead.org/users/willy/linux-nvme · 92b5abbb
      Linus Torvalds authored
      * git://git.infradead.org/users/willy/linux-nvme: (105 commits)
        NVMe: Set number of queues correctly
        NVMe: Version 0.8
        NVMe: Set queue flags correctly
        NVMe: Simplify nvme_unmap_user_pages
        NVMe: Mark the end of the sg list
        NVMe: Fix DMA mapping for admin commands
        NVMe: Rename IO_TIMEOUT to NVME_IO_TIMEOUT
        NVMe: Merge the nvme_bio and nvme_prp data structures
        NVMe: Change nvme_completion_fn to take a dev
        NVMe: Change get_nvmeq to take a dev instead of a namespace
        NVMe: Simplify completion handling
        NVMe: Update Identify Controller data structure
        NVMe: Implement doorbell stride capability
        NVMe: Version 0.7
        NVMe: Don't probe namespace 0
        Fix calculation of number of pages in a PRP List
        NVMe: Create nvme_identify and nvme_get_features functions
        NVMe: Fix memory leak in nvme_dev_add()
        NVMe: Fix calls to dma_unmap_sg
        NVMe: Correct sg list setup in nvme_map_user_pages
        ...
      92b5abbb
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · ccb19d26
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (47 commits)
        tg3: Fix single-vector MSI-X code
        openvswitch: Fix multipart datapath dumps.
        ipv6: fix per device IP snmp counters
        inetpeer: initialize ->redirect_genid in inet_getpeer()
        net: fix NULL-deref in WARN() in skb_gso_segment()
        net: WARN if skb_checksum_help() is called on skb requiring segmentation
        caif: Remove bad WARN_ON in caif_dev
        caif: Fix typo in Vendor/Product-ID for CAIF modems
        bnx2x: Disable AN KR work-around for BCM57810
        bnx2x: Remove AutoGrEEEn for BCM84833
        bnx2x: Remove 100Mb force speed for BCM84833
        bnx2x: Fix PFC setting on BCM57840
        bnx2x: Fix Super-Isolate mode for BCM84833
        net: fix some sparse errors
        net: kill duplicate included header
        net: sh-eth: Fix build error by the value which is not defined
        net: Use device model to get driver name in skb_gso_segment()
        bridge: BH already disabled in br_fdb_cleanup()
        net: move sock_update_memcg outside of CONFIG_INET
        mwl8k: Fixing Sparse ENDIAN CHECK warning
        ...
      ccb19d26
    • Len Brown's avatar
    • Tony Luck's avatar
      acpi/apei/einj: Add extensions to EINJ from rev 5.0 of acpi spec · c130bd6f
      Tony Luck authored
      ACPI 5.0 provides extensions to the EINJ mechanism to specify the
      target for the error injection - by APICID for cpu related errors,
      by address for memory related errors, and by segment/bus/device/function
      for PCIe related errors. Also extensions for vendor specific error
      injections.
      Tested-by: default avatarChen Gong <gong.chen@linux.intel.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      c130bd6f
    • Len Brown's avatar
      Merge branch 'atomicio-remove' into release · cb797175
      Len Brown authored
      cb797175
    • Len Brown's avatar
      Merge branch 'apei' into release · 037d76f4
      Len Brown authored
      037d76f4
    • Thomas Renninger's avatar
      intel_idle: Split up and provide per CPU initialization func · 65b7f839
      Thomas Renninger authored
      Function split up, should have no functional change.
      
      Provides entry point for physically hotplugged CPUs
      to initialize and activate cpuidle.
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      CC: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
      CC: Shaohua Li <shaohua.li@intel.com>
      CC: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      65b7f839
    • Thomas Renninger's avatar
      ACPI processor: Remove unneeded variable passed by acpi_processor_hotadd_init V2 · 3bd81a87
      Thomas Renninger authored
      V2: Fix typo: pr->handle -> pr, here: acpi_processor_hotadd_init(pr)
      
      This is a very small part taken from patches which afaik
      are coming from Yunhong Jiang (for a Xen not a Linus repo?).
      
      Cleanup only: no functional change.
      
      Advantage (beside cleanup) is that other data of the pr (acpi_processor) struct
      in the acpi_processor_hotadd_init() is needed later, for example a newly
      introduced flag:
      pr->flags.need_hotplug_init
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      CC: Bjorn Helgaas <bhelgaas@google.com>
      CC: Jiang, Yunhong <yunhong.jiang@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      3bd81a87
    • Matt Carlson's avatar
      tg3: Fix single-vector MSI-X code · c3b5003b
      Matt Carlson authored
      Kdump kernels leave MSI-X interrupts (as setup by the crashed kernel)
      enabled.  However, kdump only enables one CPU in the new environment,
      thus causing tg3 to abort MSI-X setup.  When the driver attempts to
      enable INTA or MSI interrupt modes on a kdump kernel, interrupt
      delivery fails.
      
      This patch attempts to workaround the problem by forcing the driver
      to enable a single MSI-X interrupt.  In such a configuration, the
      device's multivector interrupt mode must be disabled.
      Signed-off-by: default avatarMatt Carlson <mcarlson@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c3b5003b
    • Ben Pfaff's avatar
      openvswitch: Fix multipart datapath dumps. · 77676fdb
      Ben Pfaff authored
      The logic to split up the list of datapaths into multiple Netlink messages
      was simply wrong, causing the list to be terminated after the first part.
      Only about the first 50 datapaths would be dumped.  This fixes the
      problem.
      Reported-by: default avatarPaul Ingram <paul@nicira.com>
      Signed-off-by: default avatarBen Pfaff <blp@nicira.com>
      Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77676fdb
    • Eric Dumazet's avatar
      ipv6: fix per device IP snmp counters · 766e9f1b
      Eric Dumazet authored
      In commit 4ce3c183 (snmp: 64bit ipstats_mib for all arches), I forgot
      to change the /proc/net/dev_snmp6/xxx output for IP counters.
      
      percpu array is 64bit per counter but the folding still used the 'long'
      variant, and output garbage on 32bit arches.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      766e9f1b
    • Linus Torvalds's avatar
      Merge tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 6a488979
      Linus Torvalds authored
      ARM: fixes for ARM platforms
      
      Some fallout from the 3.3. merge window as well as a couple bug fixes
      for older preexisting bugs that seem valid to include at this time:
      
      * sched_clock changes broke picoxcell, fix included
      * BSYM bugs causing issues with thumb2-built kernels on SMP
      * Missing module.h include on msm.
      * A collection of bugfixes for samsung platforms that didn't make it into
        the first pull requests.
      
      * tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: make BSYM macro assembly only
        ARM: highbank: remove incorrect BSYM usage
        ARM: imx: remove incorrect BSYM usage
        ARM: exynos: remove incorrect BSYM usage
        ARM: ux500: add missing ENDPROC to headsmp.S
        ARM: msm: Add missing ENDPROC to headsmp.S
        ARM: versatile: Add missing ENDPROC to headsmp.S
        ARM: EXYNOS: Invert VCLK polarity for framebuffer on ORIGEN
        ARM: S3C64XX: Fix interrupt configuration for PCA935x on Cragganmore
        ARM: S3C64XX: Fix the memory mapped GPIOs on Cragganmore
        ARM: S3C64XX: Remove hsmmc1 from Cragganmore
        ARM: S3C64XX: Remove unconditional power domain disables
        ARM: SAMSUNG: Declare struct platform_device in plat/s3c64xx-spi.h
        ARM: SAMSUNG: dma-ops.h needs mach/dma.h
        ARM: SAMSUNG: Guard against multiple inclusion of plat/dma.h
        ARM: picoxcell: fix sched_clock() cleanup fallout
        ARM: msm: vreg is a module and so needs module.h
      6a488979
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma · 57f2685c
      Linus Torvalds authored
      * 'next' of git://git.infradead.org/users/vkoul/slave-dma: (53 commits)
        ARM: mach-shmobile: specify CHCLR registers on SH7372
        dma: shdma: fix runtime PM: clear channel buffers on reset
        dma/imx-sdma: save irq flags when use spin_lock in sdma_tx_submit
        dmaengine/ste_dma40: clear LNK on channel startup
        dmaengine: intel_mid_dma: remove legacy pm interface
        ASoC: mxs: correct 'direction' of device_prep_dma_cyclic
        dmaengine: intel_mid_dma: error path fix
        dmaengine: intel_mid_dma: locking and freeing fixes
        mtd: gpmi-nand: move to dma_transfer_direction
        mtd: fix compile error for gpmi-nand
        mmc: mxs-mmc: fix the dma_transfer_direction migration
        dmaengine: add DMA_TRANS_NONE to dma_transfer_direction
        dma: mxs-dma: Don't use CLKGATE bits in CTRL0 to disable DMA channels
        dma: mxs-dma: make mxs_dma_prep_slave_sg() multi user safe
        dma: mxs-dma: Always leave mxs_dma_init() with the clock disabled.
        dma: mxs-dma: fix a typo in comment
        DMA: PL330: Remove pm_runtime_xxx calls from pl330 probe/remove
        video i.MX IPU: Fix display connections
        i.MX IPU DMA: Fix wrong burstsize settings
        dmaengine/ste_dma40: allow fixed physical channel
        ...
      
      Fix up conflicts in drivers/dma/{Kconfig,mxs-dma.c,pl330.c}
      
      The conflicts looked pretty trivial, but I'll ask people to verify them.
      57f2685c
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://github.com/jgarzik/libata-dev · 488a9d01
      Linus Torvalds authored
      * 'upstream-linus' of git://github.com/jgarzik/libata-dev:
        [libata] ata_piix: Add Toshiba Satellite Pro A120 to the quirks list due to broken suspend functionality.
        [libata] add DVRTD08A and DVR-215 to NOSETXFER device quirk list
        [libata] pata_bf54x: Support sg list in bmdma transfer.
        [libata] sata_fsl: fix the controller operating mode
        [libata] enable ata port async suspend
      488a9d01