Skip to content
  1. Feb 18, 2011
    • Stefan Berger's avatar
      tpm_tis: Use timeouts returned from TPM · 9c63b4bc
      Stefan Berger authored
      commit 9b29050f
      
       upstream.
      
      The current TPM TIS driver in git discards the timeout values returned
      from the TPM. The check of the response packet needs to consider that
      the return_code field is 0 on success and the size of the expected
      packet is equivalent to the header size + u32 length indicator for the
      TPM_GetCapability() result + 3 timeout indicators of type u32.
      
      I am also adding a sysfs entry 'timeouts' showing the timeouts that are
      being used.
      
      Signed-off-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
      Tested-by: default avatarGuillaume Chazarain <guichaz@gmail.com>
      Signed-off-by: default avatarRajiv Andrade <srajiv@linux.vnet.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      9c63b4bc
    • Rajiv Andrade's avatar
      TPM: Long default timeout fix · ac88c7ba
      Rajiv Andrade authored
      commit c4ff4b82
      
       upstream.
      
      If duration variable value is 0 at this point, it's because
      chip->vendor.duration wasn't filled by tpm_get_timeouts() yet.
      This patch sets then the lowest timeout just to give enough
      time for tpm_get_timeouts() to further succeed.
      
      This fix avoids long boot times in case another entity attempts
      to send commands to the TPM when the TPM isn't accessible.
      
      Signed-off-by: default avatarRajiv Andrade <srajiv@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ac88c7ba
    • Ryusuke Konishi's avatar
      nilfs2: fix crash after one superblock became unavailable · 43a1ff7e
      Ryusuke Konishi authored
      commit 0ca7a5b9
      
       upstream.
      
      Fixes the following kernel oops in nilfs_setup_super() which could
      arise if one of two super-blocks is unavailable.
      
      > BUG: unable to handle kernel NULL pointer dereference at   (null)
      > Pid: 3529, comm: mount.nilfs2 Not tainted 2.6.37 #1 /
      > EIP: 0060:[<c03196bc>] EFLAGS: 00010202 CPU: 3
      > EIP is at memcpy+0xc/0x1b
      > Call Trace:
      >  [<f953720e>] ? nilfs_setup_super+0x6c/0xa5 [nilfs2]
      >  [<f95369e9>] ? nilfs_get_root_dentry+0x81/0xcb [nilfs2]
      >  [<f9537a08>] ? nilfs_mount+0x4f9/0x62c [nilfs2]
      >  [<c02745cf>] ? kstrdup+0x36/0x3f
      >  [<f953750f>] ? nilfs_mount+0x0/0x62c [nilfs2]
      >  [<c0293940>] ? vfs_kern_mount+0x4d/0x12c
      >  [<c02a5100>] ? get_fs_type+0x76/0x8f
      >  [<c0293a68>] ? do_kern_mount+0x33/0xbf
      >  [<c02a784a>] ? do_mount+0x2ed/0x714
      >  [<c02a6171>] ? copy_mount_options+0x28/0xfc
      >  [<c02a7ce3>] ? sys_mount+0x72/0xaf
      >  [<c0473085>] ? syscall_call+0x7/0xb
      
      Reported-by: default avatarWakko Warner <wakko@animx.eu.org>
      Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Tested-by: default avatarWakko Warner <wakko@animx.eu.org>
      LKML-Reference: <20110121024918.GA29598@animx.eu.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      43a1ff7e
    • Joerg Roedel's avatar
      KVM: MMU: Fix 32 bit legacy paging with NPT · f967dc03
      Joerg Roedel authored
      commit f87f9288
      
       upstream.
      
      This patch fixes 32 bit legacy paging with NPT enabled. The
      mmu_check_root call on the top-level of the loop causes
      root_gfn to take values (in the tdp_enabled path) which are
      outside of guest memory. So the mmu_check_root call fails at
      some point in the loop interation causing the guest to
      tiple-fault.
      This patch changes the mmu_check_root calls to the places
      where they are really necessary. As a side-effect it
      introduces a check for the root of a pae page table too.
      
      Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f967dc03
    • Avi Kivity's avatar
      KVM: MMU: Fix incorrect direct gfn for unpaged mode shadow · e9d25812
      Avi Kivity authored
      
      
      commit c093b8b46c5f0dd12d799f0d6a3b579863df72f6 upstream.
      
      We use the physical address instead of the base gfn for the four
      PAE page directories we use in unpaged mode.  When the guest accesses
      an address above 1GB that is backed by a large host page, a BUG_ON()
      in kvm_mmu_set_gfn() triggers.
      
      Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=21962
      Reported-and-tested-by: default avatarNicolas Prochazka <prochazka.nicolas@gmail.com>
      Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e9d25812
    • Avi Kivity's avatar
      KVM: i8259: initialize isr_ack · 295c639b
      Avi Kivity authored
      
      
      commit a0272630bb594b4eac03a79e77957df7dad8eade upstream.
      
      isr_ack is never initialized.  So, until the first PIC reset, interrupts
      may fail to be injected.  This can cause Windows XP to fail to boot, as
      reported in the fallout from the fix to
      https://bugzilla.kernel.org/show_bug.cgi?id=21962.
      
      Reported-and-tested-by: default avatarNicolas Prochazka <prochazka.nicolas@gmail.com>
      Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      295c639b
    • Chris Mason's avatar
      md_make_request: don't touch the bio after calling make_request · 823c5c79
      Chris Mason authored
      commit e91ece55
      
       upstream.
      
      md_make_request was calling bio_sectors() for part_stat_add
      after it was calling the make_request function.  This is
      bad because the make_request function can free the bio and
      because the bi_size field can change around.
      
      The fix here was suggested by Jens Axboe.  It saves the
      sector count before the make_request call.  I hit this
      with CONFIG_DEBUG_PAGEALLOC turned on while trying to break
      his pretty fusionio card.
      
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      823c5c79
    • Tejun Heo's avatar
      pata_mpc52xx: inherit from ata_bmdma_port_ops · 4f8fa9bc
      Tejun Heo authored
      commit 77c5fd19
      
       upstream.
      
      pata_mpc52xx supports BMDMA but inherits ata_sff_port_ops which
      triggers BUG_ON() when a DMA command is issued.  Fix it.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarRoman Fietze <roman.fietze@telemotive.de>
      Cc: Sergei Shtylyov <sshtylyov@mvista.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      4f8fa9bc
    • NeilBrown's avatar
      md: Fix removal of extra drives when converting RAID6 to RAID5 · 0addbdd3
      NeilBrown authored
      commit bf2cb0da upstream.
      
      When a RAID6 is converted to a RAID5, the extra drive should
      be discarded.  However it isn't due to a typo in a comparison.
      
      This bug was introduced in commit e93f68a1
      
       in 2.6.35-rc4
      and is suitable for any -stable since than.
      
      As the extra drive is not removed, the 'degraded' counter is wrong and
      so the RAID5 will not respond correctly to a subsequent failure.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0addbdd3
    • NeilBrown's avatar
      md: Ensure no IO request to get md device before it is properly initialised. · 7896fe54
      NeilBrown authored
      commit 0ca69886 upstream.
      
      When an md device is in the process of coming on line it is possible
      for an IO request (typically a partition table probe) to get through
      before the array is fully initialised, which can cause unexpected
      behaviour (e.g. a crash).
      
      So explicitly record when the array is ready for IO and don't allow IO
      through until then.
      
      There is no possibility for a similar problem when the array is going
      off-line as there must only be one 'open' at that time, and it is busy
      off-lining the array and so cannot send IO requests.  So no memory
      barrier is needed in md_stop()
      
      This has been a bug since commit 409c57f3
      
       in 2.6.30 which
      introduced md_make_request.  Before then, each personality would
      register its own make_request_fn when it was ready.
      This is suitable for any stable kernel from 2.6.30.y onwards.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Reported-by: default avatar"Hawrylewicz Czarnowski, Przemyslaw" <przemyslaw.hawrylewicz.czarnowski@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7896fe54
    • NeilBrown's avatar
      md: fix regression resulting in delays in clearing bits in a bitmap · a53775f3
      NeilBrown authored
      commit 6c987910 upstream.
      
      commit 589a594b (2.6.37-rc4) fixed a problem were md_thread would
      sometimes call the ->run function at a bad time.
      
      If an error is detected during array start up after the md_thread has
      been started, the md_thread is killed.  This resulted in the ->run
      function being called once.  However the array may not be in a state
      that it is safe to call ->run.
      
      However the fix imposed meant that  ->run was not called on a timeout.
      This means that when an array goes idle, bitmap bits do not get
      cleared promptly.  While the array is busy the bits will still be
      cleared when appropriate so this is not very serious.  There is no
      risk to data.
      
      Change the test so that we only avoid calling ->run when the thread
      is being stopped.  This more explicitly addresses the problem situation.
      
      This is suitable for 2.6.37-stable and any -stable kernel to which
      589a594b
      
       was applied.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a53775f3
    • NeilBrown's avatar
      md: fix regression with re-adding devices to arrays with no metadata · f03114dc
      NeilBrown authored
      commit bf572541 upstream.
      
      Commit 1a855a06 (2.6.37-rc4) fixed a problem where devices were
      re-added when they shouldn't be but caused a regression in a less
      common case that means sometimes devices cannot be re-added when they
      should be.
      
      In particular, when re-adding a device to an array without metadata
      we should always access the device, but after the above commit we
      didn't.
      
      This patch sets the In_sync flag in that case so that the re-add
      succeeds.
      
      This patch is suitable for any -stable kernel to which 1a855a06
      
       was
      applied.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f03114dc
    • Anton Blanchard's avatar
      kernel/smp.c: fix smp_call_function_many() SMP race · 44c73d2e
      Anton Blanchard authored
      commit 6dc19899 upstream.
      
      I noticed a failure where we hit the following WARN_ON in
      generic_smp_call_function_interrupt:
      
                      if (!cpumask_test_and_clear_cpu(cpu, data->cpumask))
                              continue;
      
                      data->csd.func(data->csd.info);
      
                      refs = atomic_dec_return(&data->refs);
                      WARN_ON(refs < 0);      <-------------------------
      
      We atomically tested and cleared our bit in the cpumask, and yet the
      number of cpus left (ie refs) was 0.  How can this be?
      
      It turns out commit 54fdade1
      
      
      ("generic-ipi: make struct call_function_data lockless") is at fault.  It
      removes locking from smp_call_function_many and in doing so creates a
      rather complicated race.
      
      The problem comes about because:
      
       - The smp_call_function_many interrupt handler walks call_function.queue
         without any locking.
       - We reuse a percpu data structure in smp_call_function_many.
       - We do not wait for any RCU grace period before starting the next
         smp_call_function_many.
      
      Imagine a scenario where CPU A does two smp_call_functions back to back,
      and CPU B does an smp_call_function in between.  We concentrate on how CPU
      C handles the calls:
      
      CPU A            CPU B                  CPU C              CPU D
      
      smp_call_function
                                              smp_call_function_interrupt
                                                  walks
      					call_function.queue sees
      					data from CPU A on list
      
                       smp_call_function
      
                                              smp_call_function_interrupt
                                                  walks
      
                                              call_function.queue sees
                                                (stale) CPU A on list
      							   smp_call_function int
      							   clears last ref on A
      							   list_del_rcu, unlock
      smp_call_function reuses
      percpu *data A
                                               data->cpumask sees and
                                               clears bit in cpumask
                                               might be using old or new fn!
                                               decrements refs below 0
      
      set data->refs (too late!)
      
      The important thing to note is since the interrupt handler walks a
      potentially stale call_function.queue without any locking, then another
      cpu can view the percpu *data structure at any time, even when the owner
      is in the process of initialising it.
      
      The following test case hits the WARN_ON 100% of the time on my PowerPC
      box (having 128 threads does help :)
      
      #include <linux/module.h>
      #include <linux/init.h>
      
      #define ITERATIONS 100
      
      static void do_nothing_ipi(void *dummy)
      {
      }
      
      static void do_ipis(struct work_struct *dummy)
      {
      	int i;
      
      	for (i = 0; i < ITERATIONS; i++)
      		smp_call_function(do_nothing_ipi, NULL, 1);
      
      	printk(KERN_DEBUG "cpu %d finished\n", smp_processor_id());
      }
      
      static struct work_struct work[NR_CPUS];
      
      static int __init testcase_init(void)
      {
      	int cpu;
      
      	for_each_online_cpu(cpu) {
      		INIT_WORK(&work[cpu], do_ipis);
      		schedule_work_on(cpu, &work[cpu]);
      	}
      
      	return 0;
      }
      
      static void __exit testcase_exit(void)
      {
      }
      
      module_init(testcase_init)
      module_exit(testcase_exit)
      MODULE_LICENSE("GPL");
      MODULE_AUTHOR("Anton Blanchard");
      
      I tried to fix it by ordering the read and the write of ->cpumask and
      ->refs.  In doing so I missed a critical case but Paul McKenney was able
      to spot my bug thankfully :) To ensure we arent viewing previous
      iterations the interrupt handler needs to read ->refs then ->cpumask then
      ->refs _again_.
      
      Thanks to Milton Miller and Paul McKenney for helping to debug this issue.
      
      [miltonm@bga.com: add WARN_ON and BUG_ON, remove extra read of refs before initial read of mask that doesn't help (also noted by Peter Zijlstra), adjust comments, hopefully clarify scenario ]
      [miltonm@bga.com: remove excess tests]
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      44c73d2e
    • David Dillow's avatar
      fs/direct-io.c: don't try to allocate more than BIO_MAX_PAGES in a bio · ed8f1a28
      David Dillow authored
      commit 20d9600c
      
       upstream.
      
      When using devices that support max_segments > BIO_MAX_PAGES (256), direct
      IO tries to allocate a bio with more pages than allowed, which leads to an
      oops in dio_bio_alloc().  Clamp the request to the supported maximum, and
      change dio_bio_alloc() to reflect that bio_alloc() will always return a
      bio when called with __GFP_WAIT and a valid number of vectors.
      
      [akpm@linux-foundation.org: remove redundant BUG_ON()]
      Signed-off-by: default avatarDavid Dillow <dillowda@ornl.gov>
      Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ed8f1a28
    • Randy Dunlap's avatar
      backlight: fix 88pm860x_bl macro collision · 4e3e37b5
      Randy Dunlap authored
      commit 2550326a
      
       upstream.
      
      Fix collision with kernel-supplied #define:
      
        drivers/video/backlight/88pm860x_bl.c:24:1: warning: "CURRENT_MASK" redefined
        arch/x86/include/asm/page_64_types.h:6:1: warning: this is the location of the previous definition
      
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Cc: Haojian Zhuang <haojian.zhuang@marvell.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      4e3e37b5
    • Michael Büsch's avatar
      ssb-pcmcia: Fix parsing of invariants tuples · 49aaedca
      Michael Büsch authored
      commit dd3cb633
      
       upstream.
      
      This fixes parsing of the device invariants (MAC address)
      for PCMCIA SSB devices.
      
      ssb_pcmcia_do_get_invariants expects an iv pointer as data
      argument.
      
      Tested-by: default avatardylan cristiani <d.cristiani@idem-tech.it>
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      49aaedca
    • Corey Minyard's avatar
      char/ipmi: fix OOPS caused by pnp_unregister_driver on unregistered driver · 71a18194
      Corey Minyard authored
      commit d2478521
      
       upstream.
      
      This patch fixes an OOPS triggered when calling modprobe ipmi_si a
      second time after the first modprobe returned without finding any ipmi
      devices.  This can happen if you reload the module after having the
      first module load fail.  The driver was not deregistering from PNP in
      that case.
      
      Peter Huewe originally reported this patch and supplied a fix, I have a
      different patch based on Linus' suggestion that cleans things up a bit
      more.
      
      Cc: openipmi-developer@lists.sourceforge.net
      Reviewed-by: default avatarPeter Huewe <peterhuewe@gmx.de>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      71a18194
    • Marcin Slusarz's avatar
      watchdog: Don't change watchdog state on read of sysctl · 91bbb90c
      Marcin Slusarz authored
      commit 9ffdc6c3
      
       upstream.
      
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      [ add {}'s to fix a warning ]
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1296230433-6261-3-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      91bbb90c
    • Marcin Slusarz's avatar
      watchdog: Fix sysctl consistency · 615563d1
      Marcin Slusarz authored
      commit 39735766
      
       upstream.
      
      If it was not possible to enable watchdog for any cpu, switch
      watchdog_enabled back to 0, because it's visible via
      kernel.watchdog sysctl.
      
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1296230433-6261-2-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      615563d1
    • Guy Martin's avatar
      parisc : Remove broken line wrapping handling pdc_iodc_print() · 9b65e475
      Guy Martin authored
      commit fbea6684
      
       upstream.
      
      Remove the broken line wrapping handling in pdc_iodc_print().
      It is broken in 3 ways :
        - It doesn't keep track of the current screen position, it just
          assumes that the new buffer will be printed at the begining of the
          screen.
        - It doesn't take in account that non printable characters won't
          increase the current position on the screen.
        - And last but not least, it triggers a kernel panic if a backspace
          is the first char in the provided buffer :
      
       Backtrace:
        [<0000000040128ec4>] pdc_console_write+0x44/0x78
        [<0000000040128f18>] pdc_console_tty_write+0x20/0x38
        [<000000004032f1ac>] n_tty_write+0x2a4/0x550
        [<000000004032b158>] tty_write+0x1e0/0x2d8
        [<00000000401bb420>] vfs_write+0xb8/0x188
        [<00000000401bb630>] sys_write+0x68/0xb8
        [<0000000040104eb8>] syscall_exit+0x0/0x14
      
      Most terminals handle the line wrapping just fine. I've confirmed that
      it works correctly on a C8000 with both vga and serial output.
      
      Signed-off-by: default avatarGuy Martin <gmsoft@tuxicoman.be>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      9b65e475
    • Stefan Richter's avatar
      firewire: core: fix unstable I/O with Canon camcorder · 40688b64
      Stefan Richter authored
      commit 6044565a upstream.
      
      Regression since commit 10389536
      
      , "firewire: core: check for 1394a
      compliant IRM, fix inaccessibility of Sony camcorder":
      
      The camcorder Canon MV5i generates lots of bus resets when asynchronous
      requests are sent to it (e.g. Config ROM read requests or FCP Command
      write requests) if the camcorder is not root node.  This causes drop-
      outs in videos or makes the camcorder entirely inaccessible.
      https://bugzilla.redhat.com/show_bug.cgi?id=633260
      
      Fix this by allowing any Canon device, even if it is a pre-1394a IRM
      like MV5i are, to remain root node (if it is at least Cycle Master
      capable).  With the FireWire controller cards that I tested, MV5i always
      becomes root node when plugged in and left to its own devices.
      
      Reported-by: Ralf Lange
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      40688b64
    • Benjamin Herrenschmidt's avatar
      powerpc: Fix some 6xx/7xxx CPU setup functions · 1ad94a4f
      Benjamin Herrenschmidt authored
      commit 1f1936ff
      
       upstream.
      
      Some of those functions try to adjust the CPU features, for example
      to remove NAP support on some revisions. However, they seem to use
      r5 as an index into the CPU table entry, which might have been right
      a long time ago but no longer is. r4 is the right register to use.
      
      This probably caused some off behaviours on some PowerMac variants
      using 750cx or 7455 processor revisions.
      
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1ad94a4f
    • Anton Blanchard's avatar
      powerpc/numa: Fix bug in unmap_cpu_from_node · 756917be
      Anton Blanchard authored
      commit 429f4d8d upstream.
      
      When converting to the new cpumask code I screwed up:
      
      -       if (cpu_isset(cpu, numa_cpumask_lookup_table[node])) {
      -               cpu_clear(cpu, numa_cpumask_lookup_table[node]);
      +       if (cpumask_test_cpu(cpu, node_to_cpumask_map[node])) {
      +               cpumask_set_cpu(cpu, node_to_cpumask_map[node]);
      
      This was introduced in commit 25863de0
      
       (powerpc/cpumask: Convert NUMA code
      to new cpumask API)
      
      Fix it.
      
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      756917be
    • Anton Blanchard's avatar
      powerpc: Fix hcall tracepoint recursion · 3ca30e40
      Anton Blanchard authored
      commit 57cdfdf8
      
       upstream.
      
      Spinlocks on shared processor partitions use H_YIELD to notify the
      hypervisor we are waiting on another virtual CPU. Unfortunately this means
      the hcall tracepoints can recurse.
      
      The patch below adds a percpu depth and checks it on both the entry and
      exit hcall tracepoints.
      
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3ca30e40
    • Timur Tabi's avatar
      powerpc/85xx: fix compatible properties of the P1022DS DMA nodes used for audio · 1caf470a
      Timur Tabi authored
      commit b2e0861e
      
       upstream.
      
      In order to prevent the fsl_dma driver from claiming the DMA channels that the
      P1022DS audio driver needs, the compatible properties for those nodes must say
      "fsl,ssi-dma-channel" instead of "fsl,eloplus-dma-channel".
      
      Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1caf470a
    • Justin TerAvest's avatar
      cfq-iosched: Don't wait if queue already has requests. · e4bbb712
      Justin TerAvest authored
      commit 02a8f01b upstream.
      
      Commit 7667aa06
      
       added logic to wait for
      the last queue of the group to become busy (have at least one request),
      so that the group does not lose out for not being continuously
      backlogged. The commit did not check for the condition that the last
      queue already has some requests. As a result, if the queue already has
      requests, wait_busy is set. Later on, cfq_select_queue() checks the
      flag, and decides that since the queue has a request now and wait_busy
      is set, the queue is expired.  This results in early expiration of the
      queue.
      
      This patch fixes the problem by adding a check to see if queue already
      has requests. If it does, wait_busy is not set. As a result, time slices
      do not expire early.
      
      The queues with more than one request are usually buffered writers.
      Testing shows improvement in isolation between buffered writers.
      
      Signed-off-by: default avatarJustin TerAvest <teravest@google.com>
      Reviewed-by: default avatarGui Jianfeng <guijianfeng@cn.fujitsu.com>
      Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e4bbb712
    • David Miller's avatar
      klist: Fix object alignment on 64-bit. · 5648b203
      David Miller authored
      commit 795abaf1 upstream.
      
      Commit c0e69a5b
      
       ("klist.c: bit 0 in pointer can't be used as flag")
      intended to make sure that all klist objects were at least pointer size
      aligned, but used the constant "4" which only works on 32-bit.
      
      Use "sizeof(void *)" which is correct in all cases.
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5648b203
    • Mel Gorman's avatar
      mm: page allocator: adjust the per-cpu counter threshold when memory is low · c04eb968
      Mel Gorman authored
      commit 88f5acf8 upstream.
      
      Commit aa454840 ("calculate a better estimate of NR_FREE_PAGES when memory
      is low") noted that watermarks were based on the vmstat NR_FREE_PAGES.  To
      avoid synchronization overhead, these counters are maintained on a per-cpu
      basis and drained both periodically and when a threshold is above a
      threshold.  On large CPU systems, the difference between the estimate and
      real value of NR_FREE_PAGES can be very high.  The system can get into a
      case where pages are allocated far below the min watermark potentially
      causing livelock issues.  The commit solved the problem by taking a better
      reading of NR_FREE_PAGES when memory was low.
      
      Unfortately, as reported by Shaohua Li this accurate reading can consume a
      large amount of CPU time on systems with many sockets due to cache line
      bouncing.  This patch takes a different approach.  For large machines
      where counter drift might be unsafe and while kswapd is awake, the per-cpu
      thresholds for the target pgdat are reduced to limit the level of drift to
      what should be a safe level.  This incurs a performance penalty in heavy
      memory pressure by a factor that depends on the workload and the machine
      but the machine should function correctly without accidentally exhausting
      all memory on a node.  There is an additional cost when kswapd wakes and
      sleeps but the event is not expected to be frequent - in Shaohua's test
      case, there was one recorded sleep and wake event at least.
      
      To ensure that kswapd wakes up, a safe version of zone_watermark_ok() is
      introduced that takes a more accurate reading of NR_FREE_PAGES when called
      from wakeup_kswapd, when deciding whether it is really safe to go back to
      sleep in sleeping_prematurely() and when deciding if a zone is really
      balanced or not in balance_pgdat().  We are still using an expensive
      function but limiting how often it is called.
      
      When the test case is reproduced, the time spent in the watermark
      functions is reduced.  The following report is on the percentage of time
      spent cumulatively spent in the functions zone_nr_free_pages(),
      zone_watermark_ok(), __zone_watermark_ok(), zone_watermark_ok_safe(),
      zone_page_state_snapshot(), zone_page_state().
      
      vanilla                      11.6615%
      disable-threshold            0.2584%
      
      David said:
      
      : We had to pull aa454840
      
       "mm: page allocator: calculate a better estimate
      : of NR_FREE_PAGES when memory is low and kswapd is awake" from 2.6.36
      : internally because tests showed that it would cause the machine to stall
      : as the result of heavy kswapd activity.  I merged it back with this fix as
      : it is pending in the -mm tree and it solves the issue we were seeing, so I
      : definitely think this should be pushed to -stable (and I would seriously
      : consider it for 2.6.37 inclusion even at this late date).
      
      Signed-off-by: default avatarMel Gorman <mel@csn.ul.ie>
      Reported-by: default avatarShaohua Li <shaohua.li@intel.com>
      Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
      Tested-by: default avatarNicolas Bareil <nico@chdir.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c04eb968
    • Sonic Zhang's avatar
      mmc: bfin_sdh: fix alloc size for private data · 826099cd
      Sonic Zhang authored
      commit a34650f0
      
       upstream.
      
      The bfin_sdh driver allocates the wrong size for the private data
      in the mmc_host.  The first parameter of mmc_alloc_host should be
      the size of the local driver struct rather than the common mmc_host.
      
      Signed-off-by: default avatarSonic Zhang <sonic.zhang@analog.com>
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      Signed-off-by: default avatarChris Ball <cjb@laptop.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      826099cd
    • KAMEZAWA Hiroyuki's avatar
      memcg: fix account leak at failure of memsw acconting · ca4cf618
      KAMEZAWA Hiroyuki authored
      commit 01c88e2d upstream.
      
      Commit 4b534334
      
       ("memcg: clean up try_charge main loop") removes a
      cancel of charge at case: memory charge-> success.  mem+swap charge->
      failure.
      
      This leaks usage of memory.  Fix it.
      
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Reviewed-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
      Cc: Balbir Singh <balbir@in.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ca4cf618
    • Russell King's avatar
      ARM: initrd: disable initrd if passed address overlaps reserved region · 6880ae16
      Russell King authored
      commit b0a2679d
      
       upstream.
      
      Disable the initrd if the passed address already overlaps the reserved
      region.  This avoids oopses on Netwinders when NeTTrom tells the kernel
      that an initrd is located at mem+4MB, but this overlaps the BSS,
      resulting in the kernels in-use BSS being freed.
      
      This should be applied to v2.6.37-stable.
      
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6880ae16
    • Kacper Kornet's avatar
      Fix prlimit64 for suid/sgid processes · ceb615bf
      Kacper Kornet authored
      commit aa5bd67d
      
       upstream.
      
      Since check_prlimit_permission always fails in the case of SUID/GUID
      processes, such processes are not able to read or set their own limits.
      This commit changes this by assuming that process can always read/change
      its own limits.
      
      Signed-off-by: default avatarKacper Kornet <kornet@camk.edu.pl>
      Acked-by: default avatarJiri Slaby <jslaby@suse.cz>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ceb615bf
    • Don Skidmore's avatar
      ixgbe: fix for 82599 erratum on Header Splitting · fd70b698
      Don Skidmore authored
      commit a124339a
      
       upstream.
      
      We have found a hardware erratum on 82599 hardware that can lead to
      unpredictable behavior when Header Splitting mode is enabled.  So
      we are no longer enabling this feature on affected hardware.
      
      Please see the 82599 Specification Update for more information.
      
      Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
      Tested-by: default avatarStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fd70b698
    • Tim Deegan's avatar
      fix jiffy calculations in calibrate_delay_direct to handle overflow · eb77d7cb
      Tim Deegan authored
      commit 70a06228
      
       upstream.
      
      Fixes a hang when booting as dom0 under Xen, when jiffies can be
      quite large by the time the kernel init gets this far.
      
      Signed-off-by: default avatarTim Deegan <Tim.Deegan@citrix.com>
      [jbeulich@novell.com: !time_after() -> time_before_eq() as suggested by Jiri Slaby]
      Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      eb77d7cb
    • Suresh Siddha's avatar
      x86, mtrr: Avoid MTRR reprogramming on BP during boot on UP platforms · 17ed5041
      Suresh Siddha authored
      commit f7448548 upstream.
      
      Markus Kohn ran into a hard hang regression on an acer aspire
      1310, when acpi is enabled. git bisect showed the following
      commit as the bad one that introduced the boot regression.
      
      	commit d0af9eed
      	Author: Suresh Siddha <suresh.b.siddha@intel.com>
      	Date:   Wed Aug 19 18:05:36 2009 -0700
      
      	    x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init
      
      Because of the UP configuration of that platform,
      native_smp_prepare_cpus() bailed out (in smp_sanity_check())
      before doing the set_mtrr_aps_delayed_init()
      
      Further down the boot path, native_smp_cpus_done() will call the
      delayed MTRR initialization for the AP's (mtrr_aps_init()) with
      mtrr_aps_delayed_init not set. This resulted in the boot
      processor reprogramming its MTRR's to the values seen during the
      start of the OS boot. While this is not needed ideally, this
      shouldn't have caused any side-effects. This is because the
      reprogramming of MTRR's (set_mtrr_state() that gets called via
      set_mtrr()) will check if the live register contents are
      different from what is being asked to write and will do the actual
      write only if they are different.
      
      BP's mtrr state is read during the start of the OS boot and
      typically nothing would have changed when we ask to reprogram it
      on BP again because of the above scenario on an UP platform. So
      on a normal UP platform no reprogramming of BP MTRR MSR's
      happens and all is well.
      
      However, on this platform, bios seems to be modifying the fixed
      mtrr range registers between the start of OS boot and when we
      double check the live registers for reprogramming BP MTRR
      registers. And as the live registers are modified, we end up
      reprogramming the MTRR's to the state seen during the start of
      the OS boot.
      
      During ACPI initialization, something in the bios (probably smi
      handler?) don't like this fact and results in a hard lockup.
      
      We didn't see this boot hang issue on this platform before the
      commit d0af9eed
      
      , because only
      the AP's (if any) will program its MTRR's to the value that BP
      had at the start of the OS boot.
      
      Fix this issue by checking mtrr_aps_delayed_init before
      continuing further in the mtrr_aps_init(). Now, only AP's (if
      any) will program its MTRR's to the BP values during boot.
      
      Addresses https://bugzilla.novell.com/show_bug.cgi?id=623393
      
        [ By the way, this behavior of the bios modifying MTRR's after the start
          of the OS boot is not common and the kernel is not prepared to
          handle this situation well. Irrespective of this issue, during
          suspend/resume, linux kernel will try to reprogram the BP's MTRR values
          to the values seen during the start of the OS boot. So suspend/resume might
          be already broken on this platform for all linux kernel versions. ]
      
      Reported-and-bisected-by: default avatarMarkus Kohn <jabber@gmx.org>
      Tested-by: default avatarMarkus Kohn <jabber@gmx.org>
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: Thomas Renninger <trenn@novell.com>
      Cc: Rafael Wysocki <rjw@novell.com>
      Cc: Venkatesh Pallipadi <venki@google.com>
      LKML-Reference: <1296694975.4418.402.camel@sbsiddha-MOBL3.sc.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      17ed5041
    • Eric W. Biederman's avatar
      net: Fix ip link add netns oops · 6066deb3
      Eric W. Biederman authored
      commit 13ad1774 upstream.
      
      Ed Swierk <eswierk@bigswitch.com> writes:
      > On 2.6.35.7
      >  ip link add link eth0 netns 9999 type macvlan
      > where 9999 is a nonexistent PID triggers an oops and causes all network functions to hang:
      > [10663.821898] BUG: unable to handle kernel NULL pointer dereference at 000000000000006d
      >  [10663.821917] IP: [<ffffffff8149c2fa>] __dev_alloc_name+0x9a/0x170
      >  [10663.821933] PGD 1d3927067 PUD 22f5c5067 PMD 0
      >  [10663.821944] Oops: 0000 [#1] SMP
      >  [10663.821953] last sysfs file: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
      >  [10663.821959] CPU 3
      >  [10663.821963] Modules linked in: macvlan ip6table_filter ip6_tables rfcomm ipt_MASQUERADE binfmt_misc iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack sco ipt_REJECT bnep l2cap xt_tcpudp iptable_filter ip_tables x_tables bridge stp vboxnetadp vboxnetflt vboxdrv kvm_intel kvm parport_pc ppdev snd_hda_codec_intelhdmi snd_hda_codec_conexant arc4 iwlagn iwlcore mac80211 snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi i915 snd_seq_midi_event snd_seq thinkpad_acpi drm_kms_helper btusb tpm_tis nvram uvcvideo snd_timer snd_seq_device bluetooth videodev v4l1_compat v4l2_compat_ioctl32 tpm drm tpm_bios snd cfg80211 psmouse serio_raw intel_ips soundcore snd_page_alloc intel_agp i2c_algo_bit video output netconsole configfs lp parport usbhid hid e1000e sdhci_pci ahci libahci sdhci led_class
      >  [10663.822155]
      >  [10663.822161] Pid: 6000, comm: ip Not tainted 2.6.35-23-generic #41-Ubuntu 2901CTO/2901CTO
      >  [10663.822167] RIP: 0010:[<ffffffff8149c2fa>] [<ffffffff8149c2fa>] __dev_alloc_name+0x9a/0x170
      >  [10663.822177] RSP: 0018:ffff88014aebf7b8 EFLAGS: 00010286
      >  [10663.822182] RAX: 00000000fffffff4 RBX: ffff8801ad900800 RCX: 0000000000000000
      >  [10663.822187] RDX: ffff880000000000 RSI: 0000000000000000 RDI: ffff88014ad63000
      >  [10663.822191] RBP: ffff88014aebf808 R08: 0000000000000041 R09: 0000000000000041
      >  [10663.822196] R10: 0000000000000000 R11: dead000000200200 R12: ffff88014aebf818
      >  [10663.822201] R13: fffffffffffffffd R14: ffff88014aebf918 R15: ffff88014ad62000
      >  [10663.822207] FS: 00007f00c487f700(0000) GS:ffff880001f80000(0000) knlGS:0000000000000000
      >  [10663.822212] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      >  [10663.822216] CR2: 000000000000006d CR3: 0000000231f19000 CR4: 00000000000026e0
      >  [10663.822221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      >  [10663.822226] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      >  [10663.822231] Process ip (pid: 6000, threadinfo ffff88014aebe000, task ffff88014afb16e0)
      >  [10663.822236] Stack:
      >  [10663.822240] ffff88014aebf808 ffffffff814a2bb5 ffff88014aebf7e8 00000000a00ee8d6
      >  [10663.822251] <0> 0000000000000000 ffffffffa00ef940 ffff8801ad900800 ffff88014aebf818
      >  [10663.822265] <0> ffff88014aebf918 ffff8801ad900800 ffff88014aebf858 ffffffff8149c413
      >  [10663.822281] Call Trace:
      >  [10663.822290] [<ffffffff814a2bb5>] ? dev_addr_init+0x75/0xb0
      >  [10663.822298] [<ffffffff8149c413>] dev_alloc_name+0x43/0x90
      >  [10663.822307] [<ffffffff814a85ee>] rtnl_create_link+0xbe/0x1b0
      >  [10663.822314] [<ffffffff814ab2aa>] rtnl_newlink+0x48a/0x570
      >  [10663.822321] [<ffffffff814aafcc>] ? rtnl_newlink+0x1ac/0x570
      >  [10663.822332] [<ffffffff81030064>] ? native_x2apic_icr_read+0x4/0x20
      >  [10663.822339] [<ffffffff814a8c17>] rtnetlink_rcv_msg+0x177/0x290
      >  [10663.822346] [<ffffffff814a8aa0>] ? rtnetlink_rcv_msg+0x0/0x290
      >  [10663.822354] [<ffffffff814c25d9>] netlink_rcv_skb+0xa9/0xd0
      >  [10663.822360] [<ffffffff814a8a85>] rtnetlink_rcv+0x25/0x40
      >  [10663.822367] [<ffffffff814c223e>] netlink_unicast+0x2de/0x2f0
      >  [10663.822374] [<ffffffff814c303e>] netlink_sendmsg+0x1fe/0x2e0
      >  [10663.822383] [<ffffffff81488533>] sock_sendmsg+0xf3/0x120
      >  [10663.822391] [<ffffffff815899fe>] ? _raw_spin_lock+0xe/0x20
      >  [10663.822400] [<ffffffff81168656>] ? __d_lookup+0x136/0x150
      >  [10663.822406] [<ffffffff815899fe>] ? _raw_spin_lock+0xe/0x20
      >  [10663.822414] [<ffffffff812b7a0d>] ? _atomic_dec_and_lock+0x4d/0x80
      >  [10663.822422] [<ffffffff8116ea90>] ? mntput_no_expire+0x30/0x110
      >  [10663.822429] [<ffffffff81486ff5>] ? move_addr_to_kernel+0x65/0x70
      >  [10663.822435] [<ffffffff81493308>] ? verify_iovec+0x88/0xe0
      >  [10663.822442] [<ffffffff81489020>] sys_sendmsg+0x240/0x3a0
      > [10663.822450] [<ffffffff8111e2a9>] ? __do_fault+0x479/0x560
      >  [10663.822457] [<ffffffff815899fe>] ? _raw_spin_lock+0xe/0x20
      >  [10663.822465] [<ffffffff8116cf4a>] ? alloc_fd+0x10a/0x150
      >  [10663.822473] [<ffffffff8158d76e>] ? do_page_fault+0x15e/0x350
      >  [10663.822482] [<ffffffff8100a0f2>] system_call_fastpath+0x16/0x1b
      >  [10663.822487] Code: 90 48 8d 78 02 be 25 00 00 00 e8 92 1d e2 ff 48 85 c0 75 cf bf 20 00 00 00 e8 c3 b1 c6 ff 49 89 c7 b8 f4 ff ff ff 4d 85 ff 74 bd <4d> 8b 75 70 49 8d 45 70 48 89 45 b8 49 83 ee 58 eb 28 48 8d 55
      >  [10663.822618] RIP [<ffffffff8149c2fa>] __dev_alloc_name+0x9a/0x170
      >  [10663.822627] RSP <ffff88014aebf7b8>
      >  [10663.822631] CR2: 000000000000006d
      >  [10663.822636] ---[ end trace 3dfd6c3ad5327ca7 ]---
      
      This bug was introduced in:
      commit 81adee47
      
      
      Author: Eric W. Biederman <ebiederm@aristanetworks.com>
      Date:   Sun Nov 8 00:53:51 2009 -0800
      
          net: Support specifying the network namespace upon device creation.
      
          There is no good reason to not support userspace specifying the
          network namespace during device creation, and it makes it easier
          to create a network device and pass it to a child network namespace
          with a well known name.
      
          We have to be careful to ensure that the target network namespace
          for the new device exists through the life of the call.  To keep
          that logic clear I have factored out the network namespace grabbing
          logic into rtnl_link_get_net.
      
          In addtion we need to continue to pass the source network namespace
          to the rtnl_link_ops.newlink method so that we can find the base
          device source network namespace.
      
      Signed-off-by: default avatarEric W. Biederman <ebiederm@aristanetworks.com>
      Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      
      Where apparently I forgot to add error handling to the path where we create
      a new network device in a new network namespace, and pass in an invalid pid.
      
      Reported-by: default avatarEd Swierk <eswierk@bigswitch.com>
      Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6066deb3
    • Tejun Heo's avatar
      ptrace: use safer wake up on ptrace_detach() · c17b0a7e
      Tejun Heo authored
      commit 01e05e9a
      
       upstream.
      
      The wake_up_process() call in ptrace_detach() is spurious and not
      interlocked with the tracee state.  IOW, the tracee could be running or
      sleeping in any place in the kernel by the time wake_up_process() is
      called.  This can lead to the tracee waking up unexpectedly which can be
      dangerous.
      
      The wake_up is spurious and should be removed but for now reduce its
      toxicity by only waking up if the tracee is in TRACED or STOPPED state.
      
      This bug can possibly be used as an attack vector.  I don't think it
      will take too much effort to come up with an attack which triggers oops
      somewhere.  Most sleeps are wrapped in condition test loops and should
      be safe but we have quite a number of places where sleep and wakeup
      conditions are expected to be interlocked.  Although the window of
      opportunity is tiny, ptrace can be used by non-privileged users and with
      some loading the window can definitely be extended and exploited.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarRoland McGrath <roland@redhat.com>
      Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c17b0a7e
    • Pavel Machek's avatar
      serial: unbreak billionton CF card · 0ee4d843
      Pavel Machek authored
      commit d0694e2a
      
       upstream.
      
      Unbreak Billionton CF bluetooth card. This actually fixes a regression
      on zaurus.
      
      Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0ee4d843
    • Dario Lombardo's avatar
      drivers: update to pl2303 usb-serial to support Motorola cables · 12bc5428
      Dario Lombardo authored
      commit 96a3e79e
      
       upstream.
      
      Added 0x0307 device id to support Motorola cables to the pl2303 usb
      serial driver. This cable has a modified chip that is a pl2303, but
      declares itself as 0307. Fixed by adding the right device id to the
      supported devices list, assigning it the code labeled
      PL2303_PRODUCT_ID_MOTOROLA.
      
      Signed-off-by: default avatarDario Lombardo <dario.lombardo@libero.it>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      12bc5428
    • Amit Shah's avatar
      virtio: console: Wake up outvq on host notifications · 65c888a0
      Amit Shah authored
      commit 2770c5ea
      
       upstream.
      
      The outvq needs to be woken up on host notifications so that buffers
      consumed by the host can be reclaimed, outvq freed, and application
      writes may proceed again.
      
      The need for this is now finally noticed when I have qemu patches ready
      to use nonblocking IO and flow control.
      
      CC: Hans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Acked-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      65c888a0