<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/security/apparmor, branch v3.12</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.12</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.12'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2013-10-16T00:54:01Z</updated>
<entry>
<title>apparmor: fix bad lock balance when introspecting policy</title>
<updated>2013-10-16T00:54:01Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-10-14T18:46:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ed2c7da3a40c58410508fe24e12d03e508d7ec01'/>
<id>urn:sha1:ed2c7da3a40c58410508fe24e12d03e508d7ec01</id>
<content type='text'>
BugLink: http://bugs.launchpad.net/bugs/1235977

The profile introspection seq file has a locking bug when policy is viewed
from a virtual root (task in a policy namespace), introspection from the
real root is not affected.

The test for root
    while (parent) {
is correct for the real root, but incorrect for tasks in a policy namespace.
This allows the task to walk backup the policy tree past its virtual root
causing it to be unlocked before the virtual root should be in the p_stop
fn.

This results in the following lockdep back trace:
[   78.479744] [ BUG: bad unlock balance detected! ]
[   78.479792] 3.11.0-11-generic #17 Not tainted
[   78.479838] -------------------------------------
[   78.479885] grep/2223 is trying to release lock (&amp;ns-&gt;lock) at:
[   78.479952] [&lt;ffffffff817bf3be&gt;] mutex_unlock+0xe/0x10
[   78.480002] but there are no more locks to release!
[   78.480037]
[   78.480037] other info that might help us debug this:
[   78.480037] 1 lock held by grep/2223:
[   78.480037]  #0:  (&amp;p-&gt;lock){+.+.+.}, at: [&lt;ffffffff812111bd&gt;] seq_read+0x3d/0x3d0
[   78.480037]
[   78.480037] stack backtrace:
[   78.480037] CPU: 0 PID: 2223 Comm: grep Not tainted 3.11.0-11-generic #17
[   78.480037] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[   78.480037]  ffffffff817bf3be ffff880007763d60 ffffffff817b97ef ffff8800189d2190
[   78.480037]  ffff880007763d88 ffffffff810e1c6e ffff88001f044730 ffff8800189d2190
[   78.480037]  ffffffff817bf3be ffff880007763e00 ffffffff810e5bd6 0000000724fe56b7
[   78.480037] Call Trace:
[   78.480037]  [&lt;ffffffff817bf3be&gt;] ? mutex_unlock+0xe/0x10
[   78.480037]  [&lt;ffffffff817b97ef&gt;] dump_stack+0x54/0x74
[   78.480037]  [&lt;ffffffff810e1c6e&gt;] print_unlock_imbalance_bug+0xee/0x100
[   78.480037]  [&lt;ffffffff817bf3be&gt;] ? mutex_unlock+0xe/0x10
[   78.480037]  [&lt;ffffffff810e5bd6&gt;] lock_release_non_nested+0x226/0x300
[   78.480037]  [&lt;ffffffff817bf2fe&gt;] ? __mutex_unlock_slowpath+0xce/0x180
[   78.480037]  [&lt;ffffffff817bf3be&gt;] ? mutex_unlock+0xe/0x10
[   78.480037]  [&lt;ffffffff810e5d5c&gt;] lock_release+0xac/0x310
[   78.480037]  [&lt;ffffffff817bf2b3&gt;] __mutex_unlock_slowpath+0x83/0x180
[   78.480037]  [&lt;ffffffff817bf3be&gt;] mutex_unlock+0xe/0x10
[   78.480037]  [&lt;ffffffff81376c91&gt;] p_stop+0x51/0x90
[   78.480037]  [&lt;ffffffff81211408&gt;] seq_read+0x288/0x3d0
[   78.480037]  [&lt;ffffffff811e9d9e&gt;] vfs_read+0x9e/0x170
[   78.480037]  [&lt;ffffffff811ea8cc&gt;] SyS_read+0x4c/0xa0
[   78.480037]  [&lt;ffffffff817ccc9d&gt;] system_call_fastpath+0x1a/0x1f

Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Signed-off-by: James Morris &lt;james.l.morris@oracle.com&gt;
</content>
</entry>
<entry>
<title>apparmor: fix memleak of the profile hash</title>
<updated>2013-10-16T00:53:59Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-10-14T18:44:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5cb3e91ebd0405519795f243adbfc4ed2a6fe53f'/>
<id>urn:sha1:5cb3e91ebd0405519795f243adbfc4ed2a6fe53f</id>
<content type='text'>
BugLink: http://bugs.launchpad.net/bugs/1235523

This fixes the following kmemleak trace:
unreferenced object 0xffff8801e8c35680 (size 32):
  comm "apparmor_parser", pid 691, jiffies 4294895667 (age 13230.876s)
  hex dump (first 32 bytes):
    e0 d3 4e b5 ac 6d f4 ed 3f cb ee 48 1c fd 40 cf  ..N..m..?..H..@.
    5b cc e9 93 00 00 00 00 00 00 00 00 00 00 00 00  [...............
  backtrace:
    [&lt;ffffffff817a97ee&gt;] kmemleak_alloc+0x4e/0xb0
    [&lt;ffffffff811ca9f3&gt;] __kmalloc+0x103/0x290
    [&lt;ffffffff8138acbc&gt;] aa_calc_profile_hash+0x6c/0x150
    [&lt;ffffffff8138074d&gt;] aa_unpack+0x39d/0xd50
    [&lt;ffffffff8137eced&gt;] aa_replace_profiles+0x3d/0xd80
    [&lt;ffffffff81376937&gt;] profile_replace+0x37/0x50
    [&lt;ffffffff811e9f2d&gt;] vfs_write+0xbd/0x1e0
    [&lt;ffffffff811ea96c&gt;] SyS_write+0x4c/0xa0
    [&lt;ffffffff817ccb1d&gt;] system_call_fastpath+0x1a/0x1f
    [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff

Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Signed-off-by: James Morris &lt;james.l.morris@oracle.com&gt;
</content>
</entry>
<entry>
<title>apparmor: fix suspicious RCU usage warning in policy.c/policy.h</title>
<updated>2013-09-29T23:54:01Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-09-29T15:39:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=4cd4fc77032dca46fe7475d81461e29145db247a'/>
<id>urn:sha1:4cd4fc77032dca46fe7475d81461e29145db247a</id>
<content type='text'>
The recent 3.12 pull request for apparmor was missing a couple rcu _protected
access modifiers. Resulting in the follow suspicious RCU usage

 [   29.804534] [ INFO: suspicious RCU usage. ]
 [   29.804539] 3.11.0+ #5 Not tainted
 [   29.804541] -------------------------------
 [   29.804545] security/apparmor/include/policy.h:363 suspicious rcu_dereference_check() usage!
 [   29.804548]
 [   29.804548] other info that might help us debug this:
 [   29.804548]
 [   29.804553]
 [   29.804553] rcu_scheduler_active = 1, debug_locks = 1
 [   29.804558] 2 locks held by apparmor_parser/1268:
 [   29.804560]  #0:  (sb_writers#9){.+.+.+}, at: [&lt;ffffffff81120a4c&gt;] file_start_write+0x27/0x29
 [   29.804576]  #1:  (&amp;ns-&gt;lock){+.+.+.}, at: [&lt;ffffffff811f5d88&gt;] aa_replace_profiles+0x166/0x57c
 [   29.804589]
 [   29.804589] stack backtrace:
 [   29.804595] CPU: 0 PID: 1268 Comm: apparmor_parser Not tainted 3.11.0+ #5
 [   29.804599] Hardware name: ASUSTeK Computer Inc.         UL50VT          /UL50VT    , BIOS 217     03/01/2010
 [   29.804602]  0000000000000000 ffff8800b95a1d90 ffffffff8144eb9b ffff8800b94db540
 [   29.804611]  ffff8800b95a1dc0 ffffffff81087439 ffff880138cc3a18 ffff880138cc3a18
 [   29.804619]  ffff8800b9464a90 ffff880138cc3a38 ffff8800b95a1df0 ffffffff811f5084
 [   29.804628] Call Trace:
 [   29.804636]  [&lt;ffffffff8144eb9b&gt;] dump_stack+0x4e/0x82
 [   29.804642]  [&lt;ffffffff81087439&gt;] lockdep_rcu_suspicious+0xfc/0x105
 [   29.804649]  [&lt;ffffffff811f5084&gt;] __aa_update_replacedby+0x53/0x7f
 [   29.804655]  [&lt;ffffffff811f5408&gt;] __replace_profile+0x11f/0x1ed
 [   29.804661]  [&lt;ffffffff811f6032&gt;] aa_replace_profiles+0x410/0x57c
 [   29.804668]  [&lt;ffffffff811f16d4&gt;] profile_replace+0x35/0x4c
 [   29.804674]  [&lt;ffffffff81120fa3&gt;] vfs_write+0xad/0x113
 [   29.804680]  [&lt;ffffffff81121609&gt;] SyS_write+0x44/0x7a
 [   29.804687]  [&lt;ffffffff8145bfd2&gt;] system_call_fastpath+0x16/0x1b
 [   29.804691]
 [   29.804694] ===============================
 [   29.804697] [ INFO: suspicious RCU usage. ]
 [   29.804700] 3.11.0+ #5 Not tainted
 [   29.804703] -------------------------------
 [   29.804706] security/apparmor/policy.c:566 suspicious rcu_dereference_check() usage!
 [   29.804709]
 [   29.804709] other info that might help us debug this:
 [   29.804709]
 [   29.804714]
 [   29.804714] rcu_scheduler_active = 1, debug_locks = 1
 [   29.804718] 2 locks held by apparmor_parser/1268:
 [   29.804721]  #0:  (sb_writers#9){.+.+.+}, at: [&lt;ffffffff81120a4c&gt;] file_start_write+0x27/0x29
 [   29.804733]  #1:  (&amp;ns-&gt;lock){+.+.+.}, at: [&lt;ffffffff811f5d88&gt;] aa_replace_profiles+0x166/0x57c
 [   29.804744]
 [   29.804744] stack backtrace:
 [   29.804750] CPU: 0 PID: 1268 Comm: apparmor_parser Not tainted 3.11.0+ #5
 [   29.804753] Hardware name: ASUSTeK Computer Inc.         UL50VT          /UL50VT    , BIOS 217     03/01/2010
 [   29.804756]  0000000000000000 ffff8800b95a1d80 ffffffff8144eb9b ffff8800b94db540
 [   29.804764]  ffff8800b95a1db0 ffffffff81087439 ffff8800b95b02b0 0000000000000000
 [   29.804772]  ffff8800b9efba08 ffff880138cc3a38 ffff8800b95a1dd0 ffffffff811f4f94
 [   29.804779] Call Trace:
 [   29.804786]  [&lt;ffffffff8144eb9b&gt;] dump_stack+0x4e/0x82
 [   29.804791]  [&lt;ffffffff81087439&gt;] lockdep_rcu_suspicious+0xfc/0x105
 [   29.804798]  [&lt;ffffffff811f4f94&gt;] aa_free_replacedby_kref+0x4d/0x62
 [   29.804804]  [&lt;ffffffff811f4f47&gt;] ? aa_put_namespace+0x17/0x17
 [   29.804810]  [&lt;ffffffff811f4f0b&gt;] kref_put+0x36/0x40
 [   29.804816]  [&lt;ffffffff811f5423&gt;] __replace_profile+0x13a/0x1ed
 [   29.804822]  [&lt;ffffffff811f6032&gt;] aa_replace_profiles+0x410/0x57c
 [   29.804829]  [&lt;ffffffff811f16d4&gt;] profile_replace+0x35/0x4c
 [   29.804835]  [&lt;ffffffff81120fa3&gt;] vfs_write+0xad/0x113
 [   29.804840]  [&lt;ffffffff81121609&gt;] SyS_write+0x44/0x7a
 [   29.804847]  [&lt;ffffffff8145bfd2&gt;] system_call_fastpath+0x16/0x1b

Reported-by: miles.lane@gmail.com
CC: paulmck@linux.vnet.ibm.com
Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Signed-off-by: James Morris &lt;james.l.morris@oracle.com&gt;
</content>
</entry>
<entry>
<title>apparmor: Use shash crypto API interface for profile hashes</title>
<updated>2013-09-29T23:53:59Z</updated>
<author>
<name>Tyler Hicks</name>
<email>tyhicks@canonical.com</email>
</author>
<published>2013-09-29T15:39:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=71ac7f6255c560716c20da8ee2c964bbd96e941f'/>
<id>urn:sha1:71ac7f6255c560716c20da8ee2c964bbd96e941f</id>
<content type='text'>
Use the shash interface, rather than the hash interface, when hashing
AppArmor profiles. The shash interface does not use scatterlists and it
is a better fit for what AppArmor needs.

This fixes a kernel paging BUG when aa_calc_profile_hash() is passed a
buffer from vmalloc(). The hash interface requires callers to handle
vmalloc() buffers differently than what AppArmor was doing. Due to
vmalloc() memory not being physically contiguous, each individual page
behind the buffer must be assigned to a scatterlist with sg_set_page()
and then the scatterlist passed to crypto_hash_update().

The shash interface does not have that limitation and allows vmalloc()
and kmalloc() buffers to be handled in the same manner.

BugLink: https://launchpad.net/bugs/1216294/
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=62261

Signed-off-by: Tyler Hicks &lt;tyhicks@canonical.com&gt;
Acked-by: Seth Arnold &lt;seth.arnold@canonical.com&gt;
Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Signed-off-by: James Morris &lt;james.l.morris@oracle.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security</title>
<updated>2013-09-07T21:34:07Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-09-07T21:34:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=11c7b03d42a847db90862d0f9d8be6ce9b2f0553'/>
<id>urn:sha1:11c7b03d42a847db90862d0f9d8be6ce9b2f0553</id>
<content type='text'>
Pull security subsystem updates from James Morris:
 "Nothing major for this kernel, just maintenance updates"

* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (21 commits)
  apparmor: add the ability to report a sha1 hash of loaded policy
  apparmor: export set of capabilities supported by the apparmor module
  apparmor: add the profile introspection file to interface
  apparmor: add an optional profile attachment string for profiles
  apparmor: add interface files for profiles and namespaces
  apparmor: allow setting any profile into the unconfined state
  apparmor: make free_profile available outside of policy.c
  apparmor: rework namespace free path
  apparmor: update how unconfined is handled
  apparmor: change how profile replacement update is done
  apparmor: convert profile lists to RCU based locking
  apparmor: provide base for multiple profiles to be replaced at once
  apparmor: add a features/policy dir to interface
  apparmor: enable users to query whether apparmor is enabled
  apparmor: remove minimum size check for vmalloc()
  Smack: parse multiple rules per write to load2, up to PAGE_SIZE-1 bytes
  Smack: network label match fix
  security: smack: add a hash table to quicken smk_find_entry()
  security: smack: fix memleak in smk_write_rules_list()
  xattr: Constify -&gt;name member of "struct xattr".
  ...
</content>
</entry>
<entry>
<title>module/lsm: Have apparmor module parameters work with no args</title>
<updated>2013-08-20T06:07:44Z</updated>
<author>
<name>Steven Rostedt</name>
<email>rostedt@goodmis.org</email>
</author>
<published>2013-08-20T06:03:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5265fc6219ddbf8dfc9b18223448a4997fb06eae'/>
<id>urn:sha1:5265fc6219ddbf8dfc9b18223448a4997fb06eae</id>
<content type='text'>
The apparmor module parameters for param_ops_aabool and
param_ops_aalockpolicy are both based off of the param_ops_bool,
and can handle a NULL value passed in as val. Have it enable the
new KERNEL_PARAM_FL_NOARGS flag to allow the parameters to be set
without having to state "=y" or "=1".

Cc: John Johansen &lt;john.johansen@canonical.com&gt;
Signed-off-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
</entry>
<entry>
<title>apparmor: add the ability to report a sha1 hash of loaded policy</title>
<updated>2013-08-14T18:42:08Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-08-14T18:27:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f8eb8a1324e81927b2c64823b2fc38386efd3fef'/>
<id>urn:sha1:f8eb8a1324e81927b2c64823b2fc38386efd3fef</id>
<content type='text'>
Provide userspace the ability to introspect a sha1 hash value for each
profile currently loaded.

Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Acked-by: Seth Arnold &lt;seth.arnold@canonical.com&gt;

</content>
</entry>
<entry>
<title>apparmor: export set of capabilities supported by the apparmor module</title>
<updated>2013-08-14T18:42:07Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-08-14T18:27:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=84f1f787421cd83bb7dfb34d584586f6a5fe7baa'/>
<id>urn:sha1:84f1f787421cd83bb7dfb34d584586f6a5fe7baa</id>
<content type='text'>
Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Acked-by: Seth Arnold &lt;seth.arnold@canonical.com&gt;

</content>
</entry>
<entry>
<title>apparmor: add the profile introspection file to interface</title>
<updated>2013-08-14T18:42:07Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-07-11T04:18:43Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=29b3822f1e132aa0f115f69730d6e4182df153d4'/>
<id>urn:sha1:29b3822f1e132aa0f115f69730d6e4182df153d4</id>
<content type='text'>
Add the dynamic namespace relative profiles file to the interace, to allow
introspection of loaded profiles and their modes.

Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Acked-by: Kees Cook &lt;kees@ubuntu.com&gt;
</content>
</entry>
<entry>
<title>apparmor: add an optional profile attachment string for profiles</title>
<updated>2013-08-14T18:42:07Z</updated>
<author>
<name>John Johansen</name>
<email>john.johansen@canonical.com</email>
</author>
<published>2013-07-11T04:17:43Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=556d0be74b19cb6288e5eb2f3216eac247d87968'/>
<id>urn:sha1:556d0be74b19cb6288e5eb2f3216eac247d87968</id>
<content type='text'>
Add the ability to take in and report a human readable profile attachment
string for profiles so that attachment specifications can be easily
inspected.

Signed-off-by: John Johansen &lt;john.johansen@canonical.com&gt;
Acked-by: Seth Arnold &lt;seth.arnold@canonical.com&gt;
</content>
</entry>
</feed>
