1. 13 Mar, 2011 6 commits
  2. 11 Mar, 2011 3 commits
    • Lukas Czerner's avatar
      block: fix mis-synchronisation in blkdev_issue_zeroout() · 0aeea189
      Lukas Czerner authored
      BZ29402
      https://bugzilla.kernel.org/show_bug.cgi?id=29402
      
      We can hit serious mis-synchronization in bio completion path of
      blkdev_issue_zeroout() leading to a panic.
      
      The problem is that when we are going to wait_for_completion() in
      blkdev_issue_zeroout() we check if the bb.done equals issued (number of
      submitted bios). If it does, we can skip the wait_for_completition()
      and just out of the function since there is nothing to wait for.
      However, there is a ordering problem because bio_batch_end_io() is
      calling atomic_inc(&bb->done) before complete(), hence it might seem to
      blkdev_issue_zeroout() that all bios has been completed and exit. At
      this point when bio_batch_end_io() is going to call complete(bb->wait),
      bb and wait does not longer exist since it was allocated on stack in
      blkdev_issue_zeroout() ==> panic!
      
      (thread 1)                      (thread 2)
      bio_batch_end_io()              blkdev_issue_zeroout()
        if(bb) {                      ...
          if (bb->end_io)             ...
            bb->end_io(bio, err);     ...
          atomic_inc(&bb->done);      ...
          ...                         while (issued != atomic_read(&bb.done))
          ...                         (let issued == bb.done)
          ...                         (do the rest of the function)
          ...                         return ret;
          complete(bb->wait);
          ^^^^^^^^
          panic
      
      We can fix this easily by simplifying bio_batch and completion counting.
      
      Also remove bio_end_io_t *end_io since it is not used.
      Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
      Reported-by: default avatarEric Whitney <eric.whitney@hp.com>
      Tested-by: default avatarEric Whitney <eric.whitney@hp.com>
      Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
      CC: Dmitry Monakhov <dmonakhov@openvz.org>
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      0aeea189
    • Dave Airlie's avatar
      drm/radeon: add pageflip hooks for fusion · fdc315a1
      Dave Airlie authored
      Looks like these got passed over with both being merged at the same
      time but not quite meeting in the middle.
      
      should fix: https://bugs.freedesktop.org/show_bug.cgi?id=34137
      along with Michael's phoronix article.
      
      Reported-by: Chi-Thanh Christopher Nguyen
      Article-written-by: Michael Larabel @ phoronix
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      fdc315a1
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 78f9bbb5
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
        ariadne: remove redundant NULL check
        ip6ip6: autoload ip6 tunnel
        net: bridge builtin vs. ipv6 modular
        ipv6: Don't create clones of host routes.
        pktgen: fix errata in show results
        ipv4: Fix erroneous uses of ifa_address.
        vxge: update MAINTAINERS
        r6040: bump to version 0.27 and date 23Feb2011
        r6040: fix multicast operations
        rds: prevent BUG_ON triggering on congestion map updates
        bonding 802.3ad: Rename rx_machine_lock to state_machine_lock
        bonding 802.3ad: Fix the state machine locking v2
        drivers/net/macvtap: fix error check
        net: fix multithreaded signal handling in unix recv routines
        net: Enter net/ipv6/ even if CONFIG_IPV6=n
        net/smsc911x.c: Set the VLAN1 register to fix VLAN MTU problem
        bnx2x: fix MaxBW configuration
        bnx2x: (NPAR) prevent HW access in D3 state
        bnx2x: fix link notification
        bnx2x: fix non-pmf device load flow
      
      Doing my first --no-ff merge here, to get the explicit merge commit.
      
      David did a back-merge in order to get commit 8909c9ad ("net: don't
      allow CAP_NET_ADMIN to load non-netdev kernel modules") so that we can
      add Stephen Hemminger's fix to handle ip6 tunnels as well, which uses
      the MODULE_ALIAS_NETDEV() macro created by that change.
      78f9bbb5
  3. 10 Mar, 2011 27 commits
  4. 09 Mar, 2011 4 commits
    • Vasiliy Kulikov's avatar
      net: don't allow CAP_NET_ADMIN to load non-netdev kernel modules · 8909c9ad
      Vasiliy Kulikov authored
      Since a8f80e8f any process with
      CAP_NET_ADMIN may load any module from /lib/modules/.  This doesn't mean
      that CAP_NET_ADMIN is a superset of CAP_SYS_MODULE as modules are
      limited to /lib/modules/**.  However, CAP_NET_ADMIN capability shouldn't
      allow anybody load any module not related to networking.
      
      This patch restricts an ability of autoloading modules to netdev modules
      with explicit aliases.  This fixes CVE-2011-1019.
      
      Arnd Bergmann suggested to leave untouched the old pre-v2.6.32 behavior
      of loading netdev modules by name (without any prefix) for processes
      with CAP_SYS_MODULE to maintain the compatibility with network scripts
      that use autoloading netdev modules by aliases like "eth0", "wlan0".
      
      Currently there are only three users of the feature in the upstream
      kernel: ipip, ip_gre and sit.
      
          root@albatros:~# capsh --drop=$(seq -s, 0 11),$(seq -s, 13 34) --
          root@albatros:~# grep Cap /proc/$$/status
          CapInh:	0000000000000000
          CapPrm:	fffffff800001000
          CapEff:	fffffff800001000
          CapBnd:	fffffff800001000
          root@albatros:~# modprobe xfs
          FATAL: Error inserting xfs
          (/lib/modules/2.6.38-rc6-00001-g2bf4ca3/kernel/fs/xfs/xfs.ko): Operation not permitted
          root@albatros:~# lsmod | grep xfs
          root@albatros:~# ifconfig xfs
          xfs: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep xfs
          root@albatros:~# lsmod | grep sit
          root@albatros:~# ifconfig sit
          sit: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep sit
          root@albatros:~# ifconfig sit0
          sit0      Link encap:IPv6-in-IPv4
      	      NOARP  MTU:1480  Metric:1
      
          root@albatros:~# lsmod | grep sit
          sit                    10457  0
          tunnel4                 2957  1 sit
      
      For CAP_SYS_MODULE module loading is still relaxed:
      
          root@albatros:~# grep Cap /proc/$$/status
          CapInh:	0000000000000000
          CapPrm:	ffffffffffffffff
          CapEff:	ffffffffffffffff
          CapBnd:	ffffffffffffffff
          root@albatros:~# ifconfig xfs
          xfs: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep xfs
          xfs                   745319  0
      
      Reference: https://lkml.org/lkml/2011/2/24/203Signed-off-by: default avatarVasiliy Kulikov <segoon@openwall.com>
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarKees Cook <kees.cook@canonical.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      8909c9ad
    • Benjamin Herrenschmidt's avatar
      powerpc/pseries: Disable VPNH feature · 36e8695c
      Benjamin Herrenschmidt authored
      This feature triggers nasty races in the scheduler between the
      rebuilding of the topology and the load balancing code, causing
      the machine to hang.
      
      Disable it for now until the races are fixed.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      36e8695c
    • Benjamin Herrenschmidt's avatar
      powerpc/iseries: Fix early init access to lppaca · f2f6dad6
      Benjamin Herrenschmidt authored
      The combination of commit
      
      8154c5d2 and
      93c22703
      
      Broke boot on iSeries.
      
      The problem is that iSeries very early boot code, which generates
      the device-tree and runs before our normal early initializations
      does need access the lppaca's very early, before the PACA array is
      initialized, and in fact even before the boot PACA has been
      initialized (it contains all 0's at this stage).
      
      However, the first patch above makes that code use the new
      llpaca_of(cpu) accessor, which itself is changed by the second patch to
      use the PACA array.
      
      We fix that by reverting iSeries to directly dereferencing the array. In
      addition, we fix all iterators in the iSeries code to always skip CPU
      whose number is above 63 which is the maximum size of that array and
      the maximum number of supported CPUs on these machines.
      
      Additionally, we make sure the boot_paca is properly initialized
      in our early startup code.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f2f6dad6
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.38' of git://linux-nfs.org/~bfields/linux · 39794917
      Linus Torvalds authored
      * 'for-2.6.38' of git://linux-nfs.org/~bfields/linux:
        nfsd: wrong index used in inner loop
        nfsd4: fix bad pointer on failure to find delegation
        NFSD: fix decode_cb_sequence4resok
      39794917