Hi,

We are observing multiple issues after enabling SELinux on Android JB_MR2
release with 3.4 Kernel on different SOCs. Are there any known issue/s and
needs to pull some changes from upstream Kernel?
Can  you please advise on how to get these addressed?

Issue 1:  Kernel panic due to NULL pointer dereference

    <3>[  130.940912] Attempt to release alive inet socket dc030000
    <1>[  131.050907] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
    <1>[  131.050969] >>> l2esr = 0x0
    <1>[  131.050999] >>> l2esynr0 = 0x8112
    <1>[  131.051030] >>> l2esynr1 = 0x235084
    <1>[  131.051060] >>> l2ear0 = 0x50412204
    <1>[  131.051091] >>> l2ear1 = 0x3
    <1>[  131.051121] pgd = e0850000
    <1>[  131.051121] [00000000] *pgd=00000000
    <0>[  131.051182] [0:IntentService[M: 4416] Internal error: Oops: 5 [#1]
PREEMPT SMP
    <4>[  131.051243] [0:IntentService[M: 4416] Modules linked in: dhd
vpnclient
    <4>[  131.051304] [0:IntentService[M: 4416] CPU: 0    Tainted: G
W    (3.0.31-1726116 #1)
    <4>[  131.051396] [0:IntentService[M: 4416] PC is at
sock_has_perm+0x38/0xac
    <4>[  131.051426] [0:IntentService[M: 4416] LR is at
sock_has_perm+0x38/0xac
    <4>[  131.051487] [0:IntentService[M: 4416] pc : [<c0330998>]    lr :
[<c0330998>]    psr: 60000013
    <4>[  131.051548] [0:IntentService[M: 4416] sp : dac55ef0  ip : 00000002
fp : 5e75cc84
    <4>[  131.051609] [0:IntentService[M: 4416] r10: 00000000  r9 : dac54000
r8 : 00000115
    <4>[  131.051670] [0:IntentService[M: 4416] r7 : 00004000  r6 : dffda080
r5 : dc030000  r4 : 00000000
    <4>[  131.051732] [0:IntentService[M: 4416] r3 : 00000000  r2 : dac55ee8
r1 : dc030000  r0 : dffda080
    <4>[  131.051793] [0:IntentService[M: 4416] Flags: nZCv  IRQs on  FIQs
on  Mode SVC_32  ISA ARM  Segment user
    <4>[  131.051854] [0:IntentService[M: 4416] Control: 10c5787d  Table:
a7b5006a  DAC: 00000015
    .
    .
    <4>[  131.061040] [0:IntentService[M: 4416] [<c0330998>]
(sock_has_perm+0x38/0xac) from [<c032d148>]
(security_socket_getsockopt+0x14/0x1c)
    <4>[  131.061162] [0:IntentService[M: 4416] [<c032d148>]
(security_socket_getsockopt+0x14/0x1c) from [<c061abe0>]
(sys_getsockopt+0x34/0xa8)
    <4>[  131.061254] [0:IntentService[M: 4416] [<c061abe0>]
(sys_getsockopt+0x34/0xa8) from [<c0105a40>] (ret_fast_syscall+0x0/0x30)
    <0>[  131.061345] [0:IntentService[M: 4416] Code: e59631f0 e5933058
e5938004 ebf9ee24 (e5943000) 
    <4>[  131.521501] [1:IntentService[M: 4416] ---[ end trace
da227214a82491bb ]---
    <0>[  131.521562] [1:IntentService[M: 4416] Kernel panic - not syncing:
Fatal exception

This seem to be due to race condition, where sock_has_perm called in a
thread and is trying to access sksec->sid without checking sksec. Just
before that, sk->sk_security was set to NULL by selinux_sk_free_security
through sk_free in other thread.

Issue 2: Kernel panic due to memory scribbling 

    15.530394:   <7> SELinux: initialized (dev fuse, type fuse), uses
genfs_contexts
    15.622083:   <6> alarm_set_rtc: Failed to set RTC, time will be lost on
reboot
    16.177727:   <3> pagealloc: single bit error
    16.180582:   <3> ec55402e: 5d
]
    16.187528:   <6> [<c010c09c>] (unwind_backtrace+0x0/0x11c) from
[<c024a030>] (kernel_map_pages+0xfc/0x17c)
    16.187622:   <6> [<c024a030>] (kernel_map_pages+0xfc/0x17c) from
[<c021e210>] (get_page_from_freelist+0x404/0x4c8)
    16.188024:   <6> [<c021e210>] (get_page_from_freelist+0x404/0x4c8) from
[<c021ee84>] (__alloc_pages_nodemask+0x208/0x8f4)
    16.188106:   <6> [<c021ee84>] (__alloc_pages_nodemask+0x208/0x8f4) from
[<c0222238>] (__do_page_cache_readahead+0xd8/0x1f0)
    16.188237:   <6> [<c0222238>] (__do_page_cache_readahead+0xd8/0x1f0)
from [<c0222574>] (ra_submit+0x20/0x24)
    16.188400:   <6> [<c0222574>] (ra_submit+0x20/0x24) from [<c0222848>]
(page_cache_sync_readahead+0x58/0x60)
    16.188497:   <6> [<c0222848>] (page_cache_sync_readahead+0x58/0x60) from
[<c02cbcd0>] (ext4_readdir+0x650/0x670)
    16.188585:   <6> [<c02cbcd0>] (ext4_readdir+0x650/0x670) from
[<c0263580>] (vfs_readdir+0x7c/0xb0)
    16.188704:   <6> [<c0263580>] (vfs_readdir+0x7c/0xb0) from [<c02636d0>]
(sys_getdents64+0x58/0xb8)
    16.188801:   <6> [<c02636d0>] (sys_getdents64+0x58/0xb8) from
[<c0106140>] (ret_fast_syscall+0x0/0x30)

This issue is observed just after SELinux initialization done for the fuse. 

Issue 3: Kernel panic due to stack corruption 

 10047.154074:   <1> Unable to handle kernel paging request at virtual
address c0a4bc44
 10047.160300:   <1> pgd = d9d44000
 10047.162991:   <1> [c0a4bc44] *pgd=00a1941e(bad)
 10047.166994:   <0> Internal error: Oops: 8000000d [#1] PREEMPT SMP ARM
 10047.172884:   <6> Modules linked in: adsprpc
 10047.176625:   <6> CPU: 0    Not tainted  (3.4.0-g67fed0b-00018-g19ea2b0
#1)
 10047.183056:   <6> PC is at iw_priv_type_size+0xb22e4/0x283a88
 10047.188262:   <6> LR is at security_file_permission+0x94/0x9c
 10047.193472:   <6> pc : [<c0a4bc44>]    lr : [<c0335ba4>]    psr: 60000013
 10047.193491:   <6> sp : e97cbf20  ip : 00000000  fp : 00001400
 10047.204921:   <6> r10: ea6be780  r9 : e97ca000  r8 : 00001400
 10047.210130:   <6> r7 : e97cbf88  r6 : b8bbd4f0  r5 : 00000000  r4 :
00000000
 10047.216638:   <6> r3 : 00000000  r2 : 00000000  r1 : 00020000  r0 :
00000000
 10047.223153:   <6> Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM
Segment user
 10047.230271:   <6> Control: 10c5387d  Table: 1dd4406a  DAC: 00000015
 .
 .
 11285.714555:   <4> ---[ end trace 508eef886fcd4369 ]---
 11285.719840:   <0> Kernel panic - not syncing: Fatal exception

security_file_permission seem be called and when returned stack is being
corrupted. 



Thanks & Regards,
Satya

Employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by Linux Foundation


--
This message was distributed to subscribers of the seandroid-list mailing list.
If you no longer wish to subscribe, send mail to majord...@tycho.nsa.gov with
the words "unsubscribe seandroid-list" without quotes as the message.

Reply via email to