David Howells
9f35a33b8d
KEYS: Fix a NULL pointer deref in the user-defined key type
Fix a NULL pointer deref in the user-defined key type whereby updating a
negative key into a fully instantiated key will cause an oops to occur
when the code attempts to free the non-existent old payload.
This results in an oops that looks something like the following:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
IP: [<ffffffff81085fa1>] __call_rcu+0x11/0x13e
PGD 3391d067 PUD 3894a067 PMD 0
Oops: 0002 [#1] SMP
CPU 1
Pid: 4354, comm: keyctl Not tainted 3.1.0-fsdevel+ #1140 /DG965RY
RIP: 0010:[<ffffffff81085fa1>] [<ffffffff81085fa1>] __call_rcu+0x11/0x13e
RSP: 0018:ffff88003d591df8 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000000000006e
RDX: ffffffff8161d0c0 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffff88003d591e18 R08: 0000000000000000 R09: ffffffff8152fa6c
R10: 0000000000000000 R11: 0000000000000300 R12: ffff88003b8f9538
R13: ffffffff8161d0c0 R14: ffff88003b8f9d50 R15: ffff88003c69f908
FS: 00007f97eb18c720(0000) GS:ffff88003bd00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000008 CR3: 000000003d47a000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process keyctl (pid: 4354, threadinfo ffff88003d590000, task ffff88003c78a040)
Stack:
ffff88003e0ffde0 ffff88003b8f9538 0000000000000001 ffff88003b8f9d50
ffff88003d591e28 ffffffff810860f0 ffff88003d591e68 ffffffff8117bfea
ffff88003d591e68 ffffffff00000000 ffff88003e0ffde1 ffff88003e0ffde0
Call Trace:
[<ffffffff810860f0>] call_rcu_sched+0x10/0x12
[<ffffffff8117bfea>] user_update+0x8d/0xa2
[<ffffffff8117723a>] key_create_or_update+0x236/0x270
[<ffffffff811789b1>] sys_add_key+0x123/0x17e
[<ffffffff813b84bb>] system_call_fastpath+0x16/0x1b
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Jeff Layton <jlayton@redhat.com>
Acked-by: Neil Horman <nhorman@redhat.com>
Acked-by: Steve Dickson <steved@redhat.com>
Acked-by: James Morris <jmorris@namei.org>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
2011-11-15 22:32:38 -02:00 |
| .. |
|
apparmor
|
apparmor: sparse fix: include procattr.h in procattr.c
|
2011-09-09 16:56:29 -07:00 |
|
integrity
|
Merge branch 'for-linus' of git://github.com/richardweinberger/linux
|
2011-11-02 09:45:39 -07:00 |
|
keys
|
KEYS: Fix a NULL pointer deref in the user-defined key type
|
2011-11-15 22:32:38 -02:00 |
|
selinux
|
selinux: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE
|
2011-10-31 19:31:32 -04:00 |
|
smack
|
Smack: allow to access /smack/access as normal user
|
2011-10-20 16:07:31 -07:00 |
|
tomoyo
|
Merge branch 'for-linus' of git://git.selinuxproject.org/~jmorris/linux-security
|
2011-11-02 17:01:01 -07:00 |
|
capability.c
|
->permission() sanitizing: don't pass flags to ->inode_permission()
|
2011-07-20 01:43:26 -04:00 |
|
commoncap.c
|
capabilities: initialize has_cap
|
2011-08-16 09:20:45 +10:00 |
|
device_cgroup.c
|
security,rcu: Convert call_rcu(whitelist_item_free) to kfree_rcu()
|
2011-07-20 11:05:30 -07:00 |
|
inode.c
|
convert get_sb_single() users
|
2010-10-29 04:16:28 -04:00 |
|
Kconfig
|
encrypted-keys: remove trusted-keys dependency
|
2011-09-14 15:23:49 -04:00 |
|
lsm_audit.c
|
LSM: separate LSM_AUDIT_DATA_DENTRY from LSM_AUDIT_DATA_PATH
|
2011-04-25 18:14:07 -04:00 |
|
Makefile
|
integrity: move ima inode integrity data management
|
2011-07-18 12:29:38 -04:00 |
|
min_addr.c
|
mmap_min_addr check CAP_SYS_RAWIO only for write
|
2010-04-23 08:56:31 +10:00 |
|
security.c
|
Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security
|
2011-10-25 09:45:31 +02:00 |