]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
13 years agoMerge remote-tracking branch 'trivial/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:46:37 +0000 (13:46 +1000)]
Merge remote-tracking branch 'trivial/for-next'

13 years agoMerge remote-tracking branch 'osd/linux-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:45:16 +0000 (13:45 +1000)]
Merge remote-tracking branch 'osd/linux-next'

13 years agoMerge remote-tracking branch 'watchdog/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:43:48 +0000 (13:43 +1000)]
Merge remote-tracking branch 'watchdog/master'

13 years agoMerge remote-tracking branch 'agp/agp-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:43:10 +0000 (13:43 +1000)]
Merge remote-tracking branch 'agp/agp-next'

13 years agoMerge remote-tracking branch 'security/next'
Stephen Rothwell [Tue, 23 Aug 2011 03:40:38 +0000 (13:40 +1000)]
Merge remote-tracking branch 'security/next'

Conflicts:
fs/ocfs2/xattr.c

13 years agoMerge remote-tracking branch 'voltage/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:33:24 +0000 (13:33 +1000)]
Merge remote-tracking branch 'voltage/for-next'

13 years agoMerge remote-tracking branch 'viafb/viafb-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:31:59 +0000 (13:31 +1000)]
Merge remote-tracking branch 'viafb/viafb-next'

13 years agoMerge remote-tracking branch 'fbdev/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:30:36 +0000 (13:30 +1000)]
Merge remote-tracking branch 'fbdev/master'

13 years agoMerge remote-tracking branch 'mfd/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:29:10 +0000 (13:29 +1000)]
Merge remote-tracking branch 'mfd/for-next'

13 years agoMerge remote-tracking branch 'md/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:27:50 +0000 (13:27 +1000)]
Merge remote-tracking branch 'md/for-next'

13 years agoMerge remote-tracking branch 'slab/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:27:43 +0000 (13:27 +1000)]
Merge remote-tracking branch 'slab/for-next'

13 years agoMerge remote-tracking branch 'kgdb/kgdb-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:27:35 +0000 (13:27 +1000)]
Merge remote-tracking branch 'kgdb/kgdb-next'

13 years agoMerge remote-tracking branch 'mmc/mmc-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:26:15 +0000 (13:26 +1000)]
Merge remote-tracking branch 'mmc/mmc-next'

13 years agoMerge remote-tracking branch 'leds/for-mm'
Stephen Rothwell [Tue, 23 Aug 2011 03:26:08 +0000 (13:26 +1000)]
Merge remote-tracking branch 'leds/for-mm'

Conflicts:
drivers/leds/Kconfig

13 years agoMerge remote-tracking branch 'battery/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:24:24 +0000 (13:24 +1000)]
Merge remote-tracking branch 'battery/master'

13 years agoMerge branch 'quilt/device-mapper'
Stephen Rothwell [Tue, 23 Aug 2011 03:22:57 +0000 (13:22 +1000)]
Merge branch 'quilt/device-mapper'

13 years agoMerge remote-tracking branch 'input/next'
Stephen Rothwell [Tue, 23 Aug 2011 03:21:30 +0000 (13:21 +1000)]
Merge remote-tracking branch 'input/next'

13 years agoMerge branch 'quilt/rr'
Stephen Rothwell [Tue, 23 Aug 2011 03:20:11 +0000 (13:20 +1000)]
Merge branch 'quilt/rr'

13 years agoMerge remote-tracking branch 'cpufreq/next'
Stephen Rothwell [Tue, 23 Aug 2011 03:18:55 +0000 (13:18 +1000)]
Merge remote-tracking branch 'cpufreq/next'

13 years agoMerge remote-tracking branch 'sound-asoc/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:17:33 +0000 (13:17 +1000)]
Merge remote-tracking branch 'sound-asoc/for-next'

13 years agoMerge remote-tracking branch 'sound/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 03:16:08 +0000 (13:16 +1000)]
Merge remote-tracking branch 'sound/for-next'

13 years agoMerge remote-tracking branch 'crypto/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:10:52 +0000 (13:10 +1000)]
Merge remote-tracking branch 'crypto/master'

13 years agoMerge remote-tracking branch 'l2-mtd/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:09:30 +0000 (13:09 +1000)]
Merge remote-tracking branch 'l2-mtd/master'

Conflicts:
drivers/mtd/maps/lantiq-flash.c

13 years agoMerge remote-tracking branch 'bluetooth/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:08:07 +0000 (13:08 +1000)]
Merge remote-tracking branch 'bluetooth/master'

13 years agoMerge remote-tracking branch 'wireless/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:06:29 +0000 (13:06 +1000)]
Merge remote-tracking branch 'wireless/master'

13 years agoMerge remote-tracking branch 'net/master'
Stephen Rothwell [Tue, 23 Aug 2011 03:01:13 +0000 (13:01 +1000)]
Merge remote-tracking branch 'net/master'

Conflicts:
arch/powerpc/configs/40x/hcu4_defconfig
drivers/net/Kconfig
drivers/net/Makefile

13 years agoMerge remote-tracking branch 'slave-dma/next'
Stephen Rothwell [Tue, 23 Aug 2011 02:05:04 +0000 (12:05 +1000)]
Merge remote-tracking branch 'slave-dma/next'

13 years agoMerge remote-tracking branch 'ibft/master'
Stephen Rothwell [Tue, 23 Aug 2011 02:04:57 +0000 (12:04 +1000)]
Merge remote-tracking branch 'ibft/master'

13 years agoMerge remote-tracking branch 'swiotlb/master'
Stephen Rothwell [Tue, 23 Aug 2011 02:04:51 +0000 (12:04 +1000)]
Merge remote-tracking branch 'swiotlb/master'

13 years agoMerge remote-tracking branch 'ieee1394/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 02:03:32 +0000 (12:03 +1000)]
Merge remote-tracking branch 'ieee1394/for-next'

13 years agoMerge remote-tracking branch 'cpupowerutils/master'
Stephen Rothwell [Tue, 23 Aug 2011 02:02:19 +0000 (12:02 +1000)]
Merge remote-tracking branch 'cpupowerutils/master'

13 years agoMerge remote-tracking branch 'acpi/test'
Stephen Rothwell [Tue, 23 Aug 2011 02:01:02 +0000 (12:01 +1000)]
Merge remote-tracking branch 'acpi/test'

13 years agoMerge remote-tracking branch 'libata/NEXT'
Stephen Rothwell [Tue, 23 Aug 2011 01:59:44 +0000 (11:59 +1000)]
Merge remote-tracking branch 'libata/NEXT'

13 years agoMerge remote-tracking branch 'kconfig/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:59:38 +0000 (11:59 +1000)]
Merge remote-tracking branch 'kconfig/for-next'

13 years agoMerge remote-tracking branch 'kbuild/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:58:17 +0000 (11:58 +1000)]
Merge remote-tracking branch 'kbuild/for-next'

13 years agoMerge branch 'quilt/kernel-doc'
Stephen Rothwell [Tue, 23 Aug 2011 01:57:05 +0000 (11:57 +1000)]
Merge branch 'quilt/kernel-doc'

13 years agoMerge remote-tracking branch 'hwmon-staging/hwmon-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:55:54 +0000 (11:55 +1000)]
Merge remote-tracking branch 'hwmon-staging/hwmon-next'

13 years agoMerge branch 'quilt/jdelvare-hwmon'
Stephen Rothwell [Tue, 23 Aug 2011 01:54:43 +0000 (11:54 +1000)]
Merge branch 'quilt/jdelvare-hwmon'

13 years agoMerge branch 'quilt/i2c'
Stephen Rothwell [Tue, 23 Aug 2011 01:53:30 +0000 (11:53 +1000)]
Merge branch 'quilt/i2c'

13 years agoMerge remote-tracking branch 'hid/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:52:13 +0000 (11:52 +1000)]
Merge remote-tracking branch 'hid/for-next'

13 years agoMerge remote-tracking branch 'xfs/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:50:54 +0000 (11:50 +1000)]
Merge remote-tracking branch 'xfs/master'

13 years agoMerge remote-tracking branch 'ubifs/linux-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:49:43 +0000 (11:49 +1000)]
Merge remote-tracking branch 'ubifs/linux-next'

13 years agoMerge remote-tracking branch 'v9fs/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:48:32 +0000 (11:48 +1000)]
Merge remote-tracking branch 'v9fs/for-next'

13 years agoMerge remote-tracking branch 'ocfs2/linux-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:47:06 +0000 (11:47 +1000)]
Merge remote-tracking branch 'ocfs2/linux-next'

13 years agoMerge remote-tracking branch 'nfsd/nfsd-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:45:54 +0000 (11:45 +1000)]
Merge remote-tracking branch 'nfsd/nfsd-next'

13 years agoMerge remote-tracking branch 'logfs/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:44:39 +0000 (11:44 +1000)]
Merge remote-tracking branch 'logfs/master'

13 years agoMerge remote-tracking branch 'gfs2/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:43:25 +0000 (11:43 +1000)]
Merge remote-tracking branch 'gfs2/master'

13 years agoMerge remote-tracking branch 'fuse/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:42:11 +0000 (11:42 +1000)]
Merge remote-tracking branch 'fuse/for-next'

13 years agoMerge remote-tracking branch 'ext4/dev'
Stephen Rothwell [Tue, 23 Aug 2011 01:40:50 +0000 (11:40 +1000)]
Merge remote-tracking branch 'ext4/dev'

13 years agoMerge remote-tracking branch 'ceph/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:39:33 +0000 (11:39 +1000)]
Merge remote-tracking branch 'ceph/for-next'

13 years agoMerge remote-tracking branch 'unicore32/unicore32'
Stephen Rothwell [Tue, 23 Aug 2011 01:38:21 +0000 (11:38 +1000)]
Merge remote-tracking branch 'unicore32/unicore32'

13 years agoMerge remote-tracking branch 'tile/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:37:10 +0000 (11:37 +1000)]
Merge remote-tracking branch 'tile/master'

13 years agoMerge remote-tracking branch 'sh/sh-latest'
Stephen Rothwell [Tue, 23 Aug 2011 01:35:58 +0000 (11:35 +1000)]
Merge remote-tracking branch 'sh/sh-latest'

13 years agoMerge remote-tracking branch 's390/features'
Stephen Rothwell [Tue, 23 Aug 2011 01:34:46 +0000 (11:34 +1000)]
Merge remote-tracking branch 's390/features'

13 years agoMerge remote-tracking branch '52xx-and-virtex/powerpc/next'
Stephen Rothwell [Tue, 23 Aug 2011 01:33:29 +0000 (11:33 +1000)]
Merge remote-tracking branch '52xx-and-virtex/powerpc/next'

13 years agoMerge remote-tracking branch '4xx/next'
Stephen Rothwell [Tue, 23 Aug 2011 01:32:17 +0000 (11:32 +1000)]
Merge remote-tracking branch '4xx/next'

13 years agoMerge remote-tracking branch 'openrisc/for-upstream'
Stephen Rothwell [Tue, 23 Aug 2011 01:31:04 +0000 (11:31 +1000)]
Merge remote-tracking branch 'openrisc/for-upstream'

13 years agoMerge remote-tracking branch 'mips/mips-for-linux-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:29:48 +0000 (11:29 +1000)]
Merge remote-tracking branch 'mips/mips-for-linux-next'

13 years agoMerge remote-tracking branch 'm68knommu/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:28:37 +0000 (11:28 +1000)]
Merge remote-tracking branch 'm68knommu/for-next'

13 years agoMerge remote-tracking branch 'm68k/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:27:24 +0000 (11:27 +1000)]
Merge remote-tracking branch 'm68k/for-next'

13 years agoMerge remote-tracking branch 'ia64/test'
Stephen Rothwell [Tue, 23 Aug 2011 01:26:10 +0000 (11:26 +1000)]
Merge remote-tracking branch 'ia64/test'

13 years agoMerge remote-tracking branch 'cris/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:24:54 +0000 (11:24 +1000)]
Merge remote-tracking branch 'cris/for-next'

13 years agoMerge remote-tracking branch 'blackfin/for-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:23:42 +0000 (11:23 +1000)]
Merge remote-tracking branch 'blackfin/for-linus'

13 years agoMerge remote-tracking branch 's5p/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:22:28 +0000 (11:22 +1000)]
Merge remote-tracking branch 's5p/for-next'

13 years agoMerge remote-tracking branch 'msm/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:21:12 +0000 (11:21 +1000)]
Merge remote-tracking branch 'msm/for-next'

Conflicts:
arch/arm/mach-msm/io.c

13 years agoMerge remote-tracking branch 'arm-lpae/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:19:46 +0000 (11:19 +1000)]
Merge remote-tracking branch 'arm-lpae/for-next'

Conflicts:
arch/arm/include/asm/pgalloc.h
arch/arm/include/asm/pgtable.h
arch/arm/include/asm/tlb.h

13 years agoMerge remote-tracking branch 'arm/for-next'
Stephen Rothwell [Tue, 23 Aug 2011 01:18:26 +0000 (11:18 +1000)]
Merge remote-tracking branch 'arm/for-next'

13 years agoMerge remote-tracking branch 'fbdev-current/fbdev-fixes-for-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:53 +0000 (11:16 +1000)]
Merge remote-tracking branch 'fbdev-current/fbdev-fixes-for-linus'

13 years agoMerge remote-tracking branch 'rmobile-current/rmobile-fixes-for-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:52 +0000 (11:16 +1000)]
Merge remote-tracking branch 'rmobile-current/rmobile-fixes-for-linus'

13 years agoMerge remote-tracking branch 'sh-current/sh-fixes-for-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:51 +0000 (11:16 +1000)]
Merge remote-tracking branch 'sh-current/sh-fixes-for-linus'

13 years agoMerge remote-tracking branch 'input-current/for-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:39 +0000 (11:16 +1000)]
Merge remote-tracking branch 'input-current/for-linus'

13 years agoMerge remote-tracking branch 'usb.current/usb-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:37 +0000 (11:16 +1000)]
Merge remote-tracking branch 'usb.current/usb-linus'

13 years agoMerge remote-tracking branch 'tty.current/tty-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:36 +0000 (11:16 +1000)]
Merge remote-tracking branch 'tty.current/tty-linus'

13 years agoMerge remote-tracking branch 'driver-core.current/driver-core-linus'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:36 +0000 (11:16 +1000)]
Merge remote-tracking branch 'driver-core.current/driver-core-linus'

13 years agoMerge remote-tracking branch 'wireless-current/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:34 +0000 (11:16 +1000)]
Merge remote-tracking branch 'wireless-current/master'

13 years agoMerge remote-tracking branch 'net-current/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:33 +0000 (11:16 +1000)]
Merge remote-tracking branch 'net-current/master'

13 years agoMerge remote-tracking branch 'sparc-current/master'
Stephen Rothwell [Tue, 23 Aug 2011 01:16:32 +0000 (11:16 +1000)]
Merge remote-tracking branch 'sparc-current/master'

13 years ago- ns cgroup has been removed.
Li Zefan [Tue, 23 Aug 2011 01:05:13 +0000 (11:05 +1000)]
- ns cgroup has been removed.
- it's true moving a task to another cgroup can fail.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Paul Menage <paul@paulmenage.org>
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
13 years agonet: add APIs for manipulating skb page fragments.
Ian Campbell [Fri, 19 Aug 2011 06:25:00 +0000 (06:25 +0000)]
net: add APIs for manipulating skb page fragments.

The primary aim is to add skb_frag_(ref|unref) in order to remove the use of
bare get/put_page on SKB pages fragments and to isolate users from subsequent
changes to the skb_frag_t data structure.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoKEYS: Correctly destroy key payloads when their keytype is removed
David Howells [Mon, 22 Aug 2011 13:09:36 +0000 (14:09 +0100)]
KEYS: Correctly destroy key payloads when their keytype is removed

unregister_key_type() has code to mark a key as dead and make it unavailable in
one loop and then destroy all those unavailable key payloads in the next loop.
However, the loop to mark keys dead renders the key undetectable to the second
loop by changing the key type pointer also.

Fix this by the following means:

 (1) The key code has two garbage collectors: one deletes unreferenced keys and
     the other alters keyrings to delete links to old dead, revoked and expired
     keys.  They can end up holding each other up as both want to scan the key
     serial tree under spinlock.  Combine these into a single routine.

 (2) Move the dead key marking, dead link removal and dead key removal into the
     garbage collector as a three phase process running over the three cycles
     of the normal garbage collection procedure.  This is tracked by the
     KEY_GC_REAPING_DEAD_1, _2 and _3 state flags.

     unregister_key_type() then just unlinks the key type from the list, wakes
     up the garbage collector and waits for the third phase to complete.

 (3) Downgrade the key types sem in unregister_key_type() once it has deleted
     the key type from the list so that it doesn't block the keyctl() syscall.

 (4) Dead keys that cannot be simply removed in the third phase have their
     payloads destroyed with the key's semaphore write-locked to prevent
     interference by the keyctl() syscall.  There should be no in-kernel users
     of dead keys of that type by the point of unregistration, though keyctl()
     may be holding a reference.

 (5) Only perform timer recalculation in the GC if the timer actually expired.
     If it didn't, we'll get another cycle when it goes off - and if the key
     that actually triggered it has been removed, it's not a problem.

 (6) Only garbage collect link if the timer expired or if we're doing dead key
     clean up phase 2.

 (7) As only key_garbage_collector() is permitted to use rb_erase() on the key
     serial tree, it doesn't need to revalidate its cursor after dropping the
     spinlock as the node the cursor points to must still exist in the tree.

 (8) Drop the spinlock in the GC if there is contention on it or if we need to
     reschedule.  After dealing with that, get the spinlock again and resume
     scanning.

This has been tested in the following ways:

 (1) Run the keyutils testsuite against it.

 (2) Using the AF_RXRPC and RxKAD modules to test keytype removal:

     Load the rxrpc_s key type:

# insmod /tmp/af-rxrpc.ko
# insmod /tmp/rxkad.ko

     Create a key (http://people.redhat.com/~dhowells/rxrpc/listen.c):

# /tmp/listen &
[1] 8173

     Find the key:

# grep rxrpc_s /proc/keys
091086e1 I--Q--     1 perm 39390000     0     0 rxrpc_s   52:2

     Link it to a session keyring, preferably one with a higher serial number:

# keyctl link 0x20e36251 @s

     Kill the process (the key should remain as it's linked to another place):

# fg
/tmp/listen
^C

     Remove the key type:

rmmod rxkad
rmmod af-rxrpc

     This can be made a more effective test by altering the following part of
     the patch:

if (unlikely(gc_state & KEY_GC_REAPING_DEAD_2)) {
/* Make sure everyone revalidates their keys if we marked a
 * bunch as being dead and make sure all keyring ex-payloads
 * are destroyed.
 */
kdebug("dead sync");
synchronize_rcu();

     To call synchronize_rcu() in GC phase 1 instead.  That causes that the
     keyring's old payload content to hang around longer until it's RCU
     destroyed - which usually happens after GC phase 3 is complete.  This
     allows the destroy_dead_key branch to be tested.

Reported-by: Benjamin Coddington <bcodding@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: The dead key link reaper should be non-reentrant
David Howells [Mon, 22 Aug 2011 13:09:28 +0000 (14:09 +0100)]
KEYS: The dead key link reaper should be non-reentrant

The dead key link reaper should be non-reentrant as it relies on global state
to keep track of where it's got to when it returns to the work queue manager to
give it some air.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: Make the key reaper non-reentrant
David Howells [Mon, 22 Aug 2011 13:09:20 +0000 (14:09 +0100)]
KEYS: Make the key reaper non-reentrant

Make the key reaper non-reentrant by sticking it on the appropriate system work
queue when we queue it.  This will allow it to have global state and drop
locks.  It should probably be non-reentrant already as it may spend a long time
holding the key serial spinlock, and so multiple entrants can spend long
periods of time just sitting there spinning, waiting to get the lock.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: Move the unreferenced key reaper to the keys garbage collector file
David Howells [Mon, 22 Aug 2011 13:09:11 +0000 (14:09 +0100)]
KEYS: Move the unreferenced key reaper to the keys garbage collector file

Move the unreferenced key reaper function to the keys garbage collector file
as that's a more appropriate place with the dead key link reaper.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoCRED: Fix prepare_kernel_cred() to provide a new thread_group_cred struct
David Howells [Mon, 22 Aug 2011 13:09:00 +0000 (14:09 +0100)]
CRED: Fix prepare_kernel_cred() to provide a new thread_group_cred struct

Fix prepare_kernel_cred() to provide a new, separate thread_group_cred struct
otherwise when using request_key() ____call_usermodehelper() calls
umh_keys_init() with the new creds pointing to init_tgcred, which
umh_keys_init() then blithely alters.

The problem can be demonstrated by:

# keyctl request2 user a debug:a @s
249681132
# grep req /proc/keys
079906a5 I--Q--     1 perm 1f3f0000     0     0 keyring   _req.249681132: 1/4
38ef1626 IR----     1 expd 0b010000     0     0 .request_ key:ee1d4ec pid:4371 ci:1

The keyring _req.XXXX should have gone away, but something (init_tgcred) is
pinning it.

That key actually requested can then be removed and a new one created:

# keyctl unlink 249681132
1 links removed
[root@andromeda ~]# grep req /proc/keys
116cecac IR----     1 expd 0b010000     0     0 .request_ key:eeb4911 pid:4379 ci:1
36d1cbf8 I--Q--     1 perm 1f3f0000     0     0 keyring   _req.250300689: 1/4

which causes the old _req keyring to go away and a new one to take its place.

This is a consequence of the changes in:

commit 879669961b11e7f40b518784863a259f735a72bf
Author: David Howells <dhowells@redhat.com>
Date:   Fri Jun 17 11:25:59 2011 +0100
KEYS/DNS: Fix ____call_usermodehelper() to not lose the session keyring

and:

commit 17f60a7da150fdd0cfb9756f86a262daa72c835f
Author: Eric Paris <eparis@redhat.com>
Date:   Fri Apr 1 17:07:50 2011 -0400
capabilites: allow the application of capability limits to usermode helpers

After this patch is applied, the _req keyring and the .request_key key are
cleaned up.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Eric Paris <eparis@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: __key_link() should use the RCU deref wrapper for keyring payloads
David Howells [Mon, 22 Aug 2011 13:08:51 +0000 (14:08 +0100)]
KEYS: __key_link() should use the RCU deref wrapper for keyring payloads

__key_link() should use the RCU deref wrapper rcu_dereference_locked_keyring()
for accessing keyring payloads rather than calling rcu_dereference_protected()
directly.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: keyctl_get_keyring_ID() should create a session keyring if create flag set
David Howells [Mon, 22 Aug 2011 13:08:43 +0000 (14:08 +0100)]
KEYS: keyctl_get_keyring_ID() should create a session keyring if create flag set

The keyctl call:

keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 1)

should create a session keyring if the process doesn't have one of its own
because the create flag argument is set - rather than subscribing to and
returning the user-session keyring as:

keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 0)

will do.

This can be tested by commenting out pam_keyinit in the /etc/pam.d files and
running the following program a couple of times in a row:

#include <stdio.h>
#include <stdlib.h>
#include <keyutils.h>
int main(int argc, char *argv[])
{
key_serial_t uk, usk, sk, nsk;
uk  = keyctl_get_keyring_ID(KEY_SPEC_USER_KEYRING, 0);
usk = keyctl_get_keyring_ID(KEY_SPEC_USER_SESSION_KEYRING, 0);
sk  = keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 0);
nsk = keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 1);
printf("keys: %08x %08x %08x %08x\n", uk, usk, sk, nsk);
return 0;
}

Without this patch, I see:

keys: 3975ddc7 119c0c66 119c0c66 119c0c66
keys: 3975ddc7 119c0c66 119c0c66 119c0c66

With this patch, I see:

keys: 2cb4997b 34112878 34112878 17db2ce3
keys: 2cb4997b 34112878 34112878 39f3c73e

As can be seen, the session keyring starts off the same as the user-session
keyring each time, but with the patch a new session keyring is created when
the create flag is set.

Reported-by: Greg Wettstein <greg@enjellic.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: Greg Wettstein <greg@enjellic.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agoKEYS: If install_session_keyring() is given a keyring, it should install it
David Howells [Mon, 22 Aug 2011 13:08:33 +0000 (14:08 +0100)]
KEYS: If install_session_keyring() is given a keyring, it should install it

If install_session_keyring() is given a keyring, it should install it rather
than just creating a new one anyway.  This was accidentally broken in:

commit d84f4f992cbd76e8f39c488cf0c5d123843923b1
Author: David Howells <dhowells@redhat.com>
Date:   Fri Nov 14 10:39:23 2008 +1100
Subject: CRED: Inaugurate COW credentials

The impact of that commit is that pam_keyinit no longer works correctly if
'force' isn't specified against a login process. This is because:

keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 0)

now always creates a new session keyring and thus the check whether the session
keyring and the user-session keyring are the same is always false.  This leads
pam_keyinit to conclude that a session keyring is installed and it shouldn't be
revoked by pam_keyinit here if 'revoke' is specified.

Any system that specifies 'force' against pam_keyinit in the PAM configuration
files for login methods (login, ssh, su -l, kdm, etc.) is not affected since
that bypasses the broken check and forces the creation of a new session keyring
anyway (for which the revoke flag is not cleared) - and any subsequent call to
pam_keyinit really does have a session keyring already installed, and so the
check works correctly there.

Reverting to the previous behaviour will cause the kernel to subscribe the
process to the user-session keyring as its session keyring if it doesn't have a
session keyring of its own.  pam_keyinit will detect this and install a new
session keyring anyway (and won't clear the revert flag).

This can be tested by commenting out pam_keyinit in the /etc/pam.d files and
running the following program a couple of times in a row:

#include <stdio.h>
#include <stdlib.h>
#include <keyutils.h>
int main(int argc, char *argv[])
{
key_serial_t uk, usk, sk;
uk = keyctl_get_keyring_ID(KEY_SPEC_USER_KEYRING, 0);
usk = keyctl_get_keyring_ID(KEY_SPEC_USER_SESSION_KEYRING, 0);
sk = keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 0);
printf("keys: %08x %08x %08x\n", uk, usk, sk);
return 0;
}

Without the patch, I see:

keys: 3884e281 24c4dfcf 22825f8e
keys: 3884e281 24c4dfcf 068772be

With the patch, I see:

keys: 26be9c83 0e755ce0 0e755ce0
keys: 26be9c83 0e755ce0 0e755ce0

As can be seen, with the patch, the session keyring is the same as the
user-session keyring each time; without the patch a new session keyring is
generated each time.

Reported-by: Greg Wettstein <greg@enjellic.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: Greg Wettstein <greg@enjellic.com>
Signed-off-by: James Morris <jmorris@namei.org>
13 years agofirewire: sbp2: fix panic after rmmod with slow targets
Chris Boot [Mon, 22 Aug 2011 20:38:38 +0000 (21:38 +0100)]
firewire: sbp2: fix panic after rmmod with slow targets

If firewire-sbp2 starts a login to a target that doesn't complete ORBs
in a timely manner (and has to retry the login), and the module is
removed before the operation times out, you end up with a null-pointer
dereference and a kernel panic.

[SR:  This happens because sbp2_target_get/put() do not maintain
module references.  scsi_device_get/put() do, but at occasions like
Chris describes one, nobody holds a reference to an SBP-2 sdev.]

This patch cancels pending work for each unit in sbp2_remove(), which
hopefully means there are no extra references around that prevent us
from unloading. This fixes my crash.

Signed-off-by: Chris Boot <bootc@bootc.net>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
13 years agoASoC: mxs-sgtl5000: add record function
Dong Aisheng [Sun, 21 Aug 2011 16:02:46 +0000 (00:02 +0800)]
ASoC: mxs-sgtl5000: add record function

Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agosound/soc/mxs/mxs-saif.c: add missing kfree
Julia Lawall [Sun, 21 Aug 2011 11:18:45 +0000 (13:18 +0200)]
sound/soc/mxs/mxs-saif.c: add missing kfree

Move the test on pdev->id before the kzalloc to avoid requiring kfree when
the test fails.  This fix was suggested by Wolfram Sang.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@

(
if (...) { ... when != kfree(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 kfree(x); ... return ...; }
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Dong Aisheng <b29396@freescale.com>
Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: mxs-saif: clear clk gate first before register setting
Dong Aisheng [Sun, 21 Aug 2011 15:45:40 +0000 (23:45 +0800)]
ASoC: mxs-saif: clear clk gate first before register setting

Saif needs clear clk gate first before writing registers or the write
will not success.

The original xx_get_mclk function clear clk gate after mclk setting
that may cause the former mclk setting unwork, then the real output
mclk maybe inaccurate.
Placing the clear before setting mclk to avoid such an issue.

We also have to clear clk gate in startup instead of in prepare function.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-3.1' into for-3.2
Mark Brown [Mon, 22 Aug 2011 22:33:01 +0000 (23:33 +0100)]
Merge branch 'for-3.1' into for-3.2

13 years agosound/soc/fsl/mpc8610_hpcd.c: add missing of_node_put
Julia Lawall [Sat, 20 Aug 2011 07:02:01 +0000 (09:02 +0200)]
sound/soc/fsl/mpc8610_hpcd.c: add missing of_node_put

The first change is to add an of_node_put, since codec_np has previously
been allocated.  The rest of the patch reorganizes the error handling code
so the only code executed is that which is needed.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@

(
if (...) { ... when != of_node_put(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 of_node_put(x); ... return ...; }
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Timur Tabi <timur@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agosound/soc/fsl/p1022_ds.c: add missing of_node_put
Julia Lawall [Sat, 20 Aug 2011 07:02:00 +0000 (09:02 +0200)]
sound/soc/fsl/p1022_ds.c: add missing of_node_put

dma_channel_np has been accessed at this point, so decrease its reference
count before leaving the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@

(
if (...) { ... when != of_node_put(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 of_node_put(x); ... return ...; }
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agosound/soc/ep93xx/ep93xx-i2s.c: add missing kfree
Julia Lawall [Sat, 20 Aug 2011 06:12:39 +0000 (08:12 +0200)]
sound/soc/ep93xx/ep93xx-i2s.c: add missing kfree

Introduce a new label that includes kfree and jump to that one.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@

(
if (...) { ... when != kfree(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 kfree(x); ... return ...; }
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Alexander Sverdlin <subaparts@yandex.ru>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agosound/soc/kirkwood/kirkwood-i2s.c: add missing kfree
Julia Lawall [Sat, 20 Aug 2011 06:12:38 +0000 (08:12 +0200)]
sound/soc/kirkwood/kirkwood-i2s.c: add missing kfree

Adjust the goto to jump to the error handling code that includes kfree.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@

(
if (...) { ... when != kfree(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 kfree(x); ... return ...; }
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: soc-core: use GFP_KERNEL flag for kmalloc in snd_soc_cnew
Axel Lin [Sat, 20 Aug 2011 03:03:44 +0000 (11:03 +0800)]
ASoC: soc-core: use GFP_KERNEL flag for kmalloc in snd_soc_cnew

GFP_ATOMIC is not needed here, use GFP_KERNEL instead.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agosound/soc/fsl/fsl_dma.c: add missing of_node_put
Timur Tabi [Mon, 22 Aug 2011 14:22:41 +0000 (09:22 -0500)]
sound/soc/fsl/fsl_dma.c: add missing of_node_put

of_parse_phandle increments the reference count of np, so this should be
decremented before trying the next possibility.

Since we don't actually use np, we can decrement the reference count
immediately.

Reported-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Timur Tabi <timur@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Allow idle_bias_off to be specified in CODEC drivers
Mark Brown [Mon, 22 Aug 2011 17:40:30 +0000 (18:40 +0100)]
ASoC: Allow idle_bias_off to be specified in CODEC drivers

If devices can unconditionally support idle_bias_off let them flag it in
their driver structure.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Convert WM8523 to table based control and DAPM initialization
Mark Brown [Mon, 22 Aug 2011 15:02:43 +0000 (16:02 +0100)]
ASoC: Convert WM8523 to table based control and DAPM initialization

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>