<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/android_kernel_m2note/security/selinux/hooks.c, branch ng-7.1.2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://gitea.privatedns.org/xavi/android_kernel_m2note/atom?h=ng-7.1.2</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/atom?h=ng-7.1.2'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/'/>
<updated>2019-07-06T10:01:26+00:00</updated>
<entry>
<title>selinux: update netlink socket classes</title>
<updated>2019-07-06T10:01:26+00:00</updated>
<author>
<name>Stephen Smalley</name>
<email>sds@tycho.nsa.gov</email>
</author>
<published>2015-06-04T20:22:16+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=09158c4b40bb58b4297c1cf81ca612a14cbfc569'/>
<id>urn:sha1:09158c4b40bb58b4297c1cf81ca612a14cbfc569</id>
<content type='text'>
Update the set of SELinux netlink socket class definitions to match
the set of netlink protocols implemented by the kernel.  The
ip_queue implementation for the NETLINK_FIREWALL and NETLINK_IP6_FW protocols
was removed in d16cf20e2f2f13411eece7f7fb72c17d141c4a84, so we can remove
the corresponding class definitions as this is dead code.  Add new
classes for NETLINK_ISCSI, NETLINK_FIB_LOOKUP, NETLINK_CONNECTOR,
NETLINK_NETFILTER, NETLINK_GENERIC, NETLINK_SCSITRANSPORT, NETLINK_RDMA,
and NETLINK_CRYPTO so that we can distinguish among sockets created
for each of these protocols.  This change does not define the finer-grained
nlsmsg_read/write permissions or map specific nlmsg_type values to those
permissions in the SELinux nlmsgtab; if finer-grained control of these
sockets is desired/required, that can be added as a follow-on change.
We do not define a SELinux class for NETLINK_ECRYPTFS as the implementation
was removed in 624ae5284516870657505103ada531c64dba2a9a.

Change-Id: Ic233c39d4271544a3a63f9fa64c855a44fc08705
Signed-off-by: Stephen Smalley &lt;sds@tycho.nsa.gov&gt;
Signed-off-by: Paul Moore &lt;pmoore@redhat.com&gt;
</content>
</entry>
<entry>
<title>lsm: split the xfrm_state_alloc_security() hook implementation</title>
<updated>2019-07-06T10:00:57+00:00</updated>
<author>
<name>Paul Moore</name>
<email>pmoore@redhat.com</email>
</author>
<published>2013-07-23T21:38:38+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=ee8db9563d00e91bf3a2ce0e5f6152609bdf02ea'/>
<id>urn:sha1:ee8db9563d00e91bf3a2ce0e5f6152609bdf02ea</id>
<content type='text'>
The xfrm_state_alloc_security() LSM hook implementation is really a
multiplexed hook with two different behaviors depending on the
arguments passed to it by the caller.  This patch splits the LSM hook
implementation into two new hook implementations, which match the
LSM hooks in the rest of the kernel:

 * xfrm_state_alloc
 * xfrm_state_alloc_acquire

Also included in this patch are the necessary changes to the SELinux
code; no other LSMs are affected.

Change-Id: I455e3b62cc439127b735aa0b0a5183b98919255e
Signed-off-by: Paul Moore &lt;pmoore@redhat.com&gt;
Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
</content>
</entry>
<entry>
<title>xattr: Constify -&gt;name member of "struct xattr".</title>
<updated>2019-07-06T10:00:41+00:00</updated>
<author>
<name>Tetsuo Handa</name>
<email>penguin-kernel@I-love.SAKURA.ne.jp</email>
</author>
<published>2013-07-24T20:44:02+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=35e3f05d39c3bd0e4d96410ac6a996b5657da15c'/>
<id>urn:sha1:35e3f05d39c3bd0e4d96410ac6a996b5657da15c</id>
<content type='text'>
Since everybody sets kstrdup()ed constant string to "struct xattr"-&gt;name but
nobody modifies "struct xattr"-&gt;name , we can omit kstrdup() and its failure
checking by constifying -&gt;name member of "struct xattr".

Change-Id: I84a47af13e3c77b394218cc12ac8901d87b0fd69
Signed-off-by: Tetsuo Handa &lt;penguin-kernel@I-love.SAKURA.ne.jp&gt;
Reviewed-by: Joel Becker &lt;jlbec@evilplan.org&gt; [ocfs2]
Acked-by: Serge E. Hallyn &lt;serge.hallyn@ubuntu.com&gt;
Acked-by: Casey Schaufler &lt;casey@schaufler-ca.com&gt;
Acked-by: Mimi Zohar &lt;zohar@linux.vnet.ibm.com&gt;
Reviewed-by: Paul Moore &lt;paul@paul-moore.com&gt;
Tested-by: Paul Moore &lt;paul@paul-moore.com&gt;
Acked-by: Eric Paris &lt;eparis@redhat.com&gt;
Signed-off-by: James Morris &lt;james.l.morris@oracle.com&gt;
</content>
</entry>
<entry>
<title>SELinux: remove crazy contortions around proc</title>
<updated>2019-07-06T10:00:29+00:00</updated>
<author>
<name>Eric Paris</name>
<email>eparis@redhat.com</email>
</author>
<published>2012-08-24T19:58:45+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=3025d5eb549110beca11ed40de9215d0e696d72f'/>
<id>urn:sha1:3025d5eb549110beca11ed40de9215d0e696d72f</id>
<content type='text'>
We check if the fsname is proc and if so set the proc superblock security
struct flag.  We then check if the flag is set and use the string 'proc'
for the fsname instead of just using the fsname.  What's the point?  It's
always proc...  Get rid of the useless conditional.

Change-Id: Ic4cd1d3507ae5ab3346746d391070e3c899da59c
Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
</content>
</entry>
<entry>
<title>selinux: remove 'flags' parameter from avc_audit()</title>
<updated>2019-07-06T10:00:16+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-10-04T21:05:38+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=5e7ad5cca99c473489c4d7b5c7c18e043fa4096f'/>
<id>urn:sha1:5e7ad5cca99c473489c4d7b5c7c18e043fa4096f</id>
<content type='text'>
Now avc_audit() has no more users with that parameter. Remove it.

Change-Id: Ie9a1565b1d1ea0a4a8d17e0174094ff40bd6e904
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>selinux: remove 'flags' parameter from inode_has_perm</title>
<updated>2019-07-06T09:59:56+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-10-04T19:54:11+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=e280406f29cda6c390bb7cf9091572a1fc13c2ba'/>
<id>urn:sha1:e280406f29cda6c390bb7cf9091572a1fc13c2ba</id>
<content type='text'>
Every single user passes in '0'.  I think we had non-zero users back in
some stone age when selinux_inode_permission() was implemented in terms
of inode_has_perm(), but that complicated case got split up into a
totally separate code-path so that we could optimize the much simpler
special cases.

See commit 2e33405785d3 ("SELinux: delay initialization of audit data in
selinux_inode_permission") for example.

Change-Id: I9f17bfe7c581c16b2b1b66630c649d72a08738ae
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>SELinux: Institute file_path_has_perm()</title>
<updated>2019-07-06T09:58:28+00:00</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2013-06-13T22:37:55+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=578061a4297c09bf314e87240318db64f7854535'/>
<id>urn:sha1:578061a4297c09bf314e87240318db64f7854535</id>
<content type='text'>
Create a file_path_has_perm() function that is like path_has_perm() but
instead takes a file struct that is the source of both the path and the
inode (rather than getting the inode from the dentry in the path).  This
is then used where appropriate.

This will be useful for situations like unionmount where it will be
possible to have an apparently-negative dentry (eg. a fallthrough) that is
open with the file struct pointing to an inode on the lower fs.

Change-Id: I1a8a8600834be737b724f1f94b8f5ab90cc62b76
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>selinux: convert WARN_ONCE() to printk() in selinux_nlmsg_perm()</title>
<updated>2019-07-06T09:57:03+00:00</updated>
<author>
<name>Richard Guy Briggs</name>
<email>rgb@redhat.com</email>
</author>
<published>2014-11-12T19:01:34+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=33e7716f0675760244385e317daf5665c48b926a'/>
<id>urn:sha1:33e7716f0675760244385e317daf5665c48b926a</id>
<content type='text'>
Convert WARN_ONCE() to printk() in selinux_nlmsg_perm().

After conversion from audit_log() in commit e173fb26, WARN_ONCE() was
deemed too alarmist, so switch it to printk().

Change-Id: Ibe5bc4715db1de8aca55a3014955b942798d165a
Signed-off-by: Richard Guy Briggs &lt;rgb@redhat.com&gt;
[PM: Changed to printk(WARNING) so we catch all of the different
 invalid netlink messages.  In Richard's defense, he brought this
 point up earlier, but I didn't understand his point at the time.]
Signed-off-by: Paul Moore &lt;pmoore@redhat.com&gt;
</content>
</entry>
<entry>
<title>selinux: enable genfs labeling on tracefs</title>
<updated>2019-07-06T09:55:58+00:00</updated>
<author>
<name>Jeff Vander Stoep</name>
<email>jeffv@google.com</email>
</author>
<published>2017-02-21T00:03:21+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=84e818d35b6347786ecd1b9b432a993a25fe7228'/>
<id>urn:sha1:84e818d35b6347786ecd1b9b432a993a25fe7228</id>
<content type='text'>
Test: Marlin kernel builds and boots. Tracefs labels specified in
genfscon are correctly applied.

Bug: 35248779
Change-Id: Ia59e572e774a48bec6e9da0c365f29d9987907ce
Signed-off-by: Jeff Vander Stoep &lt;jeffv@google.com&gt;
</content>
</entry>
<entry>
<title>selinux: check for address length in selinux_socket_bind()</title>
<updated>2019-07-06T09:55:42+00:00</updated>
<author>
<name>Alexander Potapenko</name>
<email>glider@google.com</email>
</author>
<published>2017-03-06T18:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=3019784a9e0a01544c030c9a25d164ce9f1c3f26'/>
<id>urn:sha1:3019784a9e0a01544c030c9a25d164ce9f1c3f26</id>
<content type='text'>
[ Upstream commit e2f586bd83177d22072b275edd4b8b872daba924 ]

KMSAN (KernelMemorySanitizer, a new error detection tool) reports use of
uninitialized memory in selinux_socket_bind():

==================================================================
BUG: KMSAN: use of unitialized memory
inter: 0
CPU: 3 PID: 1074 Comm: packet2 Tainted: G    B           4.8.0-rc6+ #1916
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
 0000000000000000 ffff8800882ffb08 ffffffff825759c8 ffff8800882ffa48
 ffffffff818bf551 ffffffff85bab870 0000000000000092 ffffffff85bab550
 0000000000000000 0000000000000092 00000000bb0009bb 0000000000000002
Call Trace:
 [&lt;     inline     &gt;] __dump_stack lib/dump_stack.c:15
 [&lt;ffffffff825759c8&gt;] dump_stack+0x238/0x290 lib/dump_stack.c:51
 [&lt;ffffffff818bdee6&gt;] kmsan_report+0x276/0x2e0 mm/kmsan/kmsan.c:1008
 [&lt;ffffffff818bf0fb&gt;] __msan_warning+0x5b/0xb0 mm/kmsan/kmsan_instr.c:424
 [&lt;ffffffff822dae71&gt;] selinux_socket_bind+0xf41/0x1080 security/selinux/hooks.c:4288
 [&lt;ffffffff8229357c&gt;] security_socket_bind+0x1ec/0x240 security/security.c:1240
 [&lt;ffffffff84265d98&gt;] SYSC_bind+0x358/0x5f0 net/socket.c:1366
 [&lt;ffffffff84265a22&gt;] SyS_bind+0x82/0xa0 net/socket.c:1356
 [&lt;ffffffff81005678&gt;] do_syscall_64+0x58/0x70 arch/x86/entry/common.c:292
 [&lt;ffffffff8518217c&gt;] entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.o:?
chained origin: 00000000ba6009bb
 [&lt;ffffffff810bb7a7&gt;] save_stack_trace+0x27/0x50 arch/x86/kernel/stacktrace.c:67
 [&lt;     inline     &gt;] kmsan_save_stack_with_flags mm/kmsan/kmsan.c:322
 [&lt;     inline     &gt;] kmsan_save_stack mm/kmsan/kmsan.c:337
 [&lt;ffffffff818bd2b8&gt;] kmsan_internal_chain_origin+0x118/0x1e0 mm/kmsan/kmsan.c:530
 [&lt;ffffffff818bf033&gt;] __msan_set_alloca_origin4+0xc3/0x130 mm/kmsan/kmsan_instr.c:380
 [&lt;ffffffff84265b69&gt;] SYSC_bind+0x129/0x5f0 net/socket.c:1356
 [&lt;ffffffff84265a22&gt;] SyS_bind+0x82/0xa0 net/socket.c:1356
 [&lt;ffffffff81005678&gt;] do_syscall_64+0x58/0x70 arch/x86/entry/common.c:292
 [&lt;ffffffff8518217c&gt;] return_from_SYSCALL_64+0x0/0x6a arch/x86/entry/entry_64.o:?
origin description: ----address@SYSC_bind (origin=00000000b8c00900)
==================================================================

(the line numbers are relative to 4.8-rc6, but the bug persists upstream)

, when I run the following program as root:

=======================================================
  #include &lt;string.h&gt;
  #include &lt;sys/socket.h&gt;
  #include &lt;netinet/in.h&gt;

  int main(int argc, char *argv[]) {
    struct sockaddr addr;
    int size = 0;
    if (argc &gt; 1) {
      size = atoi(argv[1]);
    }
    memset(&amp;addr, 0, sizeof(addr));
    int fd = socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP);
    bind(fd, &amp;addr, size);
    return 0;
  }
=======================================================

(for different values of |size| other error reports are printed).

This happens because bind() unconditionally copies |size| bytes of
|addr| to the kernel, leaving the rest uninitialized. Then
security_socket_bind() reads the IP address bytes, including the
uninitialized ones, to determine the port, or e.g. pass them further to
sel_netnode_find(), which uses them to calculate a hash.

Change-Id: If398c0e3f4960b7ca768cc48dcf40f26b874a64e
Signed-off-by: Alexander Potapenko &lt;glider@google.com&gt;
Acked-by: Eric Dumazet &lt;edumazet@google.com&gt;
[PM: fixed some whitespace damage]
Signed-off-by: Paul Moore &lt;paul@paul-moore.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
