Permalink
Switch branches/tags
android-wear-n-preview-2_r0.2 android-wear-n-preview-2_r0.1 android-wear-n-preview-1_r0.2 android-wear-n-preview-1_r0.1 android-wear-6.0.1_r0.70 android-wear-6.0.1_r0.67 android-wear-6.0.1_r0.66 android-wear-6.0.1_r0.65 android-wear-6.0.1_r0.61 android-wear-6.0.1_r0.60 android-wear-6.0.1_r0.57 android-wear-6.0.1_r0.56 android-wear-6.0.1_r0.55 android-wear-6.0.1_r0.53 android-wear-6.0.1_r0.51 android-wear-6.0.1_r0.47 android-wear-6.0.1_r0.42 android-wear-6.0.1_r0.41 android-wear-6.0.1_r0.40 android-wear-6.0.1_r0.37 android-wear-6.0.1_r0.36 android-wear-6.0.1_r0.35 android-wear-6.0.1_r0.33 android-wear-6.0.1_r0.32 android-wear-6.0.1_r0.31 android-wear-6.0.1_r0.26 android-wear-6.0.1_r0.24 android-wear-6.0.1_r0.22 android-wear-6.0.1_r0.20 android-wear-6.0.1_r0.18 android-wear-6.0.1_r0.17 android-wear-6.0.1_r0.12 android-wear-6.0.1_r0.11 android-wear-6.0.1_r0.10 android-wear-6.0.1_r0.9 android-wear-6.0.1_r0.7 android-wear-6.0.1_r0.6 android-wear-6.0.1_r0.4 android-wear-6.0.1_r0.2 android-wear-6.0.1_r0.1 android-wear-5.1.1_r0.24 android-wear-5.1.1_r0.23 android-wear-5.1.1_r0.22 android-wear-5.1.1_r0.21 android-wear-5.1.1_r0.20 android-wear-5.1.1_r0.18 android-wear-5.1.1_r0.16 android-wear-5.1.1_r0.14 android-wear-5.1.1_r0.13 android-wear-5.1.1_r0.12 android-wear-5.1.1_r0.11 android-wear-5.1.1_r0.10 android-wear-5.1.1_r0.9 android-wear-5.1.1_r0.7 android-wear-5.1.1_r0.6 android-wear-5.1.1_r0.4 android-wear-5.1.1_r0.2 android-wear-5.1.1_r0.1 android-wear-5.1.1_r0.0.1 android-wear-5.1.0_r0.1 android-wear-5.0.2_r0.6 android-wear-5.0.2_r0.4 android-wear-5.0.2_r0.2 android-wear-5.0.2_r0.1 android-wear-5.0.0_r0.6 android-wear-5.0.0_r0.4 android-wear-5.0.0_r0.2 android-wear-5.0.0_r0.1 android-n-preview-5_r0.9 android-n-preview-5_r0.8 android-n-preview-5_r0.7 android-n-preview-5_r0.5 android-n-preview-4_r0.9 android-n-preview-4_r0.8 android-n-preview-4_r0.7 android-n-preview-4_r0.5 android-n-preview-3_r0.9 android-n-preview-3_r0.8 android-n-preview-3_r0.7 android-n-preview-3_r0.5 android-n-preview-2_r0.9 android-n-preview-2_r0.8 android-n-preview-2_r0.7 android-n-preview-2_r0.5 android-n-preview-1_r0.9 android-n-preview-1_r0.8 android-n-preview-1_r0.7 android-n-preview-1_r0.5 android-m-preview_r0.7 android-m-preview_r0.6 android-m-preview-2_r0.7 android-m-preview-2_r0.6 android-m-preview-1_r0.7 android-m-preview-1_r0.6 android-lego-6.0.1_r0.7 android-lego-6.0.1_r0.6 android-lego-6.0.1_r0.5 android-lego-6.0.1_r0.4 android-lego-6.0.1_r0.3 android-lego-6.0.1_r0.2
Nothing to show
Commits on Dec 4, 2016
  1. Merge pull request #1 from tsimonq2/android-msm-bullhead-3.10-marshma…

    UniversalSuperBox committed Dec 4, 2016
    …llow-dr1.6-ut
    
    Initial .travis.yml file
  2. Initial .travis.yml file

    tsimonq2 committed Dec 4, 2016
Commits on Nov 20, 2016
Commits on Oct 23, 2016
  1. Ubuntu Touch changes to defconfig.\ This compiles but make doesn't re…

    UniversalSuperBox committed Oct 23, 2016
    …port that it built successfully.
Commits on Oct 18, 2016
  1. Revert "Handle 'sk' being NULL in UID-based routing."

    UniversalSuperBox committed Oct 18, 2016
    This reverts commit ede2803. It causes a build error.
Commits on Aug 9, 2016
  1. net: ipc_router: Bind only a client port as control port

    Karthikeyan Ramasubramanian committed with Mekala Natarajan Feb 22, 2016
    IPC Router binds any port as a control port and moves it from the client
    port list to control port list. Misbehaving clients can exploit this
    incorrect behavior.
    
    IPC Router to check if the port is a client port before binding it as a
    control port.
    
    Bug: 27045580
    CRs-Fixed: 974577
    Change-Id: I9f189b76967d5f85750218a7cb6537d187a69663
    Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
  2. ashmem: Validate ashmem memory with fops pointer

    Sunil Khatri committed with Mekala Natarajan Jun 22, 2016
    Validate the ashmem memory entry against f_op pointer
    rather then comparing its name with path of the dentry.
    
    This is to avoid any invalid access to ashmem area in cases
    where some one deliberately set the dentry name to /ashmem.
    
    Bug: 30652312
    
    Change-Id: I74e50cd244f68cb13009cf2355e528485f4de34b
    Signed-off-by: Sunil Khatri <sunilkh@codeaurora.org>
Commits on Jul 19, 2016
  1. fs: ext4: disable support for fallocate FALLOC_FL_PUNCH_HOLE

    nickdesaulniers committed with Thierry Strudel Jul 18, 2016
    Bug: 28760453
    Change-Id: I019c2de559db9e4b95860ab852211b456d78c4ca
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
  2. qcacld-2.0: validate essid length before processing scan req

    Arun Khandavalli committed with m-chong Jul 19, 2016
    Presently we are not validating the length of the essid received
    and directly copying the buffer without size checking.
    
    Perform bound checking before processing the scan req.
    
    Bug: 27773913
    Change-Id: I786e4feb67bf039df3d217138a412da54f51787d
    CRs-fixed: 890228
Commits on Jul 18, 2016
  1. input: synaptics: allocate heap memory for temp buf

    Biswajit Paul committed with Thierry Strudel Jul 1, 2016
    rmidev file operations structure include write() and
    read() which accepts data from user space. Temp
    buffers are allocated through variable length arrays
    which can pose security problems. So allocate memory
    on heap instead of stack to avoid this.
    
    Bug: 28799389
    CRs-Fixed: 1032459
    Change-Id: I44443f91d435715dd0097ef8e8dfc48e291f93fc
    Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
    Signed-off-by: Biswajit Paul <biswajitpaul@codeaurora.org>
Commits on Jul 17, 2016
  1. ASoC: msm: qdsp6v2: check param length for EAC3 format

    vivek mehta committed with m-chong Jul 5, 2016
    Initialize param length with user space argument and
    check the condition for maximum length in
    SND_AUDIOCODEC_EAC3 format.
    
    BUG 28868303
    
    Change-Id: I1d139a5342c35434651ce617b3a4fd2c231574fb
    Signed-off-by: vivek mehta <mvivek@codeaurora.org>
Commits on Jul 16, 2016
  1. qcacld-2.0: Fix buffer over read in iwpriv WE_UNIT_TEST_CMD command

    Srinivas Girigowda committed with Thierry Strudel Jul 1, 2016
    In current driver, WE_UNIT_TEST_CMD has below problem.
    - apps_arg[1] can have zero value and can lead to
      buffer overead
    
    Change the code to handle the number of args if user has
    given zero.
    
    CRs-Fixed: 1029540
    Change-Id: Idc8e1d77d9623daeb98d0c4b7ad8a8d6cfa9c2d2
    Bug: 29941999
    Bug: 29944562
    Signed-off-by: Srinivas Girigowda <sgirigow@codeaurora.org>
  2. msm: ipa: fix potential race condition ioctls

    Biswajit Paul committed with Thierry Strudel Jul 8, 2016
    There are numerous potential race condition
    ioctls in the IPA driver. The fix is to add
    check wherever it copies arguments from
    user-space memory and process.
    
    Bug: 28919863
    CRs-Fixed: 1037897
    Change-Id: I5a440f89153518507acdf5dad42625503732e59a
    Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
    Signed-off-by: Biswajit Paul <biswajitpaul@codeaurora.org>
  3. msm: camera: Fix memory read by adding bounds check

    Biswajit Paul committed with Thierry Strudel Jun 29, 2016
    Adds bound check on reg_cfg_cmd->u.dmi_info.hi_tbl_offset.
    
    IOCTL VIDIOC_MSM_VFE_REG_CFG uses usersupplied value without
    performing bounds check for following cmd_type.
    VFE_READ_DMI_16BIT
    VFE_READ_DMI_32BIT
    VFE_READ_DMI_64BIT
    
    Bug: 28815326
    CRs-Fixed: 1034641
    Change-Id: I554c45ef3a172f5b5891b67a7e8e7a1f3f3882ed
    Signed-off-by: Trishansh Bhardwaj <tbhardwa@codeaurora.org>
    Signed-off-by: Biswajit Paul <biswajitpaul@codeaurora.org>
Commits on Jul 15, 2016
  1. BACKPORT: netfilter: x_tables: validate e->target_offset early

    Florian Westphal committed with Mekala Natarajan Mar 22, 2016
    (cherry picked from commit bdf533d)
    
    We should check that e->target_offset is sane before
    mark_source_chains gets called since it will fetch the target entry
    for loop detection.
    
    Bug: 29637687
    Change-Id: Ida3d7055b4905cf4c18550f3989f529a8ff5e8a9
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Mekala Natarajan <mnatarajan@google.com>
  2. UPSTREAM: netfilter: x_tables: make sure e->next_offset covers remain…

    Florian Westphal committed with Mekala Natarajan Mar 22, 2016
    …ing blob size
    
    Otherwise this function may read data beyond the ruleset blob.
    
    Bug: 29637687
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    (cherry picked from commit 6e94e0c)
    
    Change-Id: I8e5e01af575991c4648633f64a1142915a6a12aa
  3. BACKPORT: cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind

    Yueyao (Nathan) Zhu committed with pattjin Jul 14, 2016
    Bug: 28744625
    
    usbnet_link_change will call schedule_work and should be
    avoided if bind is failing. Otherwise we will end up with
    scheduled work referring to a netdev which has gone away.
    
    Instead of making the call conditional, we can just defer
    it to usbnet_probe, using the driver_info flag made for
    this purpose.
    
    (cherry picked from commit 4d06dd5)
    
    Change-Id: I2f5f951b92db0909c236a4f66b9a16a907f99a80
  4. BACKPORT: KEYS: potential uninitialized variable

    Yueyao (Nathan) Zhu committed with Thierry Strudel Jul 14, 2016
    Bug: 29823941
    
    If __key_link_begin() failed then "edit" would be uninitialized.  I've
    added a check to fix that.
    
    This allows a random user to crash the kernel, though it's quite
    difficult to achieve.  There are three ways it can be done as the user
    would have to cause an error to occur in __key_link():
    
     (1) Cause the kernel to run out of memory.  In practice, this is difficult
         to achieve without ENOMEM cropping up elsewhere and aborting the
         attempt.
    
     (2) Revoke the destination keyring between the keyring ID being looked up
         and it being tested for revocation.  In practice, this is difficult to
         time correctly because the KEYCTL_REJECT function can only be used
         from the request-key upcall process.  Further, users can only make use
         of what's in /sbin/request-key.conf, though this does including a
         rejection debugging test - which means that the destination keyring
         has to be the caller's session keyring in practice.
    
     (3) Have just enough key quota available to create a key, a new session
         keyring for the upcall and a link in the session keyring, but not then
         sufficient quota to create a link in the nominated destination keyring
         so that it fails with EDQUOT.
    
    The bug can be triggered using option (3) above using something like the
    following:
    
    	echo 80 >/proc/sys/kernel/keys/root_maxbytes
    	keyctl request2 user debug:fred negate @t
    
    The above sets the quota to something much lower (80) to make the bug
    easier to trigger, but this is dependent on the system.  Note also that
    the name of the keyring created contains a random number that may be
    between 1 and 10 characters in size, so may throw the test off by
    changing the amount of quota used.
    
    Assuming the failure occurs, something like the following will be seen:
    
    	kfree_debugcheck: out of range ptr 6b6b6b6b6b6b6b68h
    	------------[ cut here ]------------
    	kernel BUG at ../mm/slab.c:2821!
    	...
    	RIP: 0010:[<ffffffff811600f9>] kfree_debugcheck+0x20/0x25
    	RSP: 0018:ffff8804014a7de8  EFLAGS: 00010092
    	RAX: 0000000000000034 RBX: 6b6b6b6b6b6b6b68 RCX: 0000000000000000
    	RDX: 0000000000040001 RSI: 00000000000000f6 RDI: 0000000000000300
    	RBP: ffff8804014a7df0 R08: 0000000000000001 R09: 0000000000000000
    	R10: ffff8804014a7e68 R11: 0000000000000054 R12: 0000000000000202
    	R13: ffffffff81318a66 R14: 0000000000000000 R15: 0000000000000001
    	...
    	Call Trace:
    	  kfree+0xde/0x1bc
    	  assoc_array_cancel_edit+0x1f/0x36
    	  __key_link_end+0x55/0x63
    	  key_reject_and_link+0x124/0x155
    	  keyctl_reject_key+0xb6/0xe0
    	  keyctl_negate_key+0x10/0x12
    	  SyS_keyctl+0x9f/0xe7
    	  do_syscall_64+0x63/0x13a
    	  entry_SYSCALL64_slow_path+0x25/0x25
    
    Fixes: f70e2e0 ('KEYS: Do preallocation for __key_link()')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    
    (cherry picked from commit 3832742)
    
    Change-Id: I98eab3915b50b6d4d5dc0f8a023e8c26db1c43c6
  5. UPSTREAM: ipv6: Don't reduce hop limit for an interface

    Spindel committed with Thierry Strudel Mar 25, 2015
    A local route may have a lower hop_limit set than global routes do.
    
    RFC 3756, Section 4.2.7, "Parameter Spoofing"
    
    >   1.  The attacker includes a Current Hop Limit of one or another small
    >       number which the attacker knows will cause legitimate packets to
    >       be dropped before they reach their destination.
    
    >   As an example, one possible approach to mitigate this threat is to
    >   ignore very small hop limits.  The nodes could implement a
    >   configurable minimum hop limit, and ignore attempts to set it below
    >   said limit.
    
    Bug: 29409847
    
    Signed-off-by: D.S. Ljungmark <ljungmark@modio.se>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    (cherry picked from commit 6fd9909)
    
    Change-Id: I24ee5723e4bcb3fbdbf4308531ab58e9ff215e82
  6. UPSTREAM: udp: fix behavior of wrong checksums

    Eric Dumazet committed with Thierry Strudel May 30, 2015
    We have two problems in UDP stack related to bogus checksums :
    
    1) We return -EAGAIN to application even if receive queue is not empty.
       This breaks applications using edge trigger epoll()
    
    2) Under UDP flood, we can loop forever without yielding to other
       processes, potentially hanging the host, especially on non SMP.
    
    This patch is an attempt to make things better.
    
    We might in the future add extra support for rt applications
    wanting to better control time spent doing a recv() in a hostile
    environment. For example we could validate checksums before queuing
    packets in socket receive queue.
    
    Bug:29507402
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    (cherry picked from commit beb39db)
    
    Change-Id: I0096f0660d8951184f3a3b49a78702924f766cea
  7. UPSTREAM: ppp: take reference on channels netns

    Guillaume Nault committed with Thierry Strudel Mar 23, 2016
    Let channels hold a reference on their network namespace.
    Some channel types, like ppp_async and ppp_synctty, can have their
    userspace controller running in a different namespace. Therefore they
    can't rely on them to preclude their netns from being removed from
    under them.
    
    ==================================================================
    BUG: KASAN: use-after-free in ppp_unregister_channel+0x372/0x3a0 at
    addr ffff880064e217e0
    Read of size 8 by task syz-executor/11581
    =============================================================================
    BUG net_namespace (Not tainted): kasan: bad access detected
    -----------------------------------------------------------------------------
    
    Disabling lock debugging due to kernel taint
    INFO: Allocated in copy_net_ns+0x6b/0x1a0 age=92569 cpu=3 pid=6906
    [<      none      >] ___slab_alloc+0x4c7/0x500 kernel/mm/slub.c:2440
    [<      none      >] __slab_alloc+0x4c/0x90 kernel/mm/slub.c:2469
    [<     inline     >] slab_alloc_node kernel/mm/slub.c:2532
    [<     inline     >] slab_alloc kernel/mm/slub.c:2574
    [<      none      >] kmem_cache_alloc+0x23a/0x2b0 kernel/mm/slub.c:2579
    [<     inline     >] kmem_cache_zalloc kernel/include/linux/slab.h:597
    [<     inline     >] net_alloc kernel/net/core/net_namespace.c:325
    [<      none      >] copy_net_ns+0x6b/0x1a0 kernel/net/core/net_namespace.c:360
    [<      none      >] create_new_namespaces+0x2f6/0x610 kernel/kernel/nsproxy.c:95
    [<      none      >] copy_namespaces+0x297/0x320 kernel/kernel/nsproxy.c:150
    [<      none      >] copy_process.part.35+0x1bf4/0x5760 kernel/kernel/fork.c:1451
    [<     inline     >] copy_process kernel/kernel/fork.c:1274
    [<      none      >] _do_fork+0x1bc/0xcb0 kernel/kernel/fork.c:1723
    [<     inline     >] SYSC_clone kernel/kernel/fork.c:1832
    [<      none      >] SyS_clone+0x37/0x50 kernel/kernel/fork.c:1826
    [<      none      >] entry_SYSCALL_64_fastpath+0x16/0x7a kernel/arch/x86/entry/entry_64.S:185
    
    INFO: Freed in net_drop_ns+0x67/0x80 age=575 cpu=2 pid=2631
    [<      none      >] __slab_free+0x1fc/0x320 kernel/mm/slub.c:2650
    [<     inline     >] slab_free kernel/mm/slub.c:2805
    [<      none      >] kmem_cache_free+0x2a0/0x330 kernel/mm/slub.c:2814
    [<     inline     >] net_free kernel/net/core/net_namespace.c:341
    [<      none      >] net_drop_ns+0x67/0x80 kernel/net/core/net_namespace.c:348
    [<      none      >] cleanup_net+0x4e5/0x600 kernel/net/core/net_namespace.c:448
    [<      none      >] process_one_work+0x794/0x1440 kernel/kernel/workqueue.c:2036
    [<      none      >] worker_thread+0xdb/0xfc0 kernel/kernel/workqueue.c:2170
    [<      none      >] kthread+0x23f/0x2d0 kernel/drivers/block/aoe/aoecmd.c:1303
    [<      none      >] ret_from_fork+0x3f/0x70 kernel/arch/x86/entry/entry_64.S:468
    INFO: Slab 0xffffea0001938800 objects=3 used=0 fp=0xffff880064e20000
    flags=0x5fffc0000004080
    INFO: Object 0xffff880064e20000 @offset=0 fp=0xffff880064e24200
    
    CPU: 1 PID: 11581 Comm: syz-executor Tainted: G    B           4.4.0+
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
     00000000ffffffff ffff8800662c7790 ffffffff8292049d ffff88003e36a300
     ffff880064e20000 ffff880064e20000 ffff8800662c77c0 ffffffff816f2054
     ffff88003e36a300 ffffea0001938800 ffff880064e20000 0000000000000000
    Call Trace:
     [<     inline     >] __dump_stack kernel/lib/dump_stack.c:15
     [<ffffffff8292049d>] dump_stack+0x6f/0xa2 kernel/lib/dump_stack.c:50
     [<ffffffff816f2054>] print_trailer+0xf4/0x150 kernel/mm/slub.c:654
     [<ffffffff816f875f>] object_err+0x2f/0x40 kernel/mm/slub.c:661
     [<     inline     >] print_address_description kernel/mm/kasan/report.c:138
     [<ffffffff816fb0c5>] kasan_report_error+0x215/0x530 kernel/mm/kasan/report.c:236
     [<     inline     >] kasan_report kernel/mm/kasan/report.c:259
     [<ffffffff816fb4de>] __asan_report_load8_noabort+0x3e/0x40 kernel/mm/kasan/report.c:280
     [<     inline     >] ? ppp_pernet kernel/include/linux/compiler.h:218
     [<ffffffff83ad71b2>] ? ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<     inline     >] ppp_pernet kernel/include/linux/compiler.h:218
     [<ffffffff83ad71b2>] ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<     inline     >] ? ppp_pernet kernel/drivers/net/ppp/ppp_generic.c:293
     [<ffffffff83ad6f26>] ? ppp_unregister_channel+0xe6/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<ffffffff83ae18f3>] ppp_asynctty_close+0xa3/0x130 kernel/drivers/net/ppp/ppp_async.c:241
     [<ffffffff83ae1850>] ? async_lcp_peek+0x5b0/0x5b0 kernel/drivers/net/ppp/ppp_async.c:1000
     [<ffffffff82c33239>] tty_ldisc_close.isra.1+0x99/0xe0 kernel/drivers/tty/tty_ldisc.c:478
     [<ffffffff82c332c0>] tty_ldisc_kill+0x40/0x170 kernel/drivers/tty/tty_ldisc.c:744
     [<ffffffff82c34943>] tty_ldisc_release+0x1b3/0x260 kernel/drivers/tty/tty_ldisc.c:772
     [<ffffffff82c1ef21>] tty_release+0xac1/0x13e0 kernel/drivers/tty/tty_io.c:1901
     [<ffffffff82c1e460>] ? release_tty+0x320/0x320 kernel/drivers/tty/tty_io.c:1688
     [<ffffffff8174de36>] __fput+0x236/0x780 kernel/fs/file_table.c:208
     [<ffffffff8174e405>] ____fput+0x15/0x20 kernel/fs/file_table.c:244
     [<ffffffff813595ab>] task_work_run+0x16b/0x200 kernel/kernel/task_work.c:115
     [<     inline     >] exit_task_work kernel/include/linux/task_work.h:21
     [<ffffffff81307105>] do_exit+0x8b5/0x2c60 kernel/kernel/exit.c:750
     [<ffffffff813fdd20>] ? debug_check_no_locks_freed+0x290/0x290 kernel/kernel/locking/lockdep.c:4123
     [<ffffffff81306850>] ? mm_update_next_owner+0x6f0/0x6f0 kernel/kernel/exit.c:357
     [<ffffffff813215e6>] ? __dequeue_signal+0x136/0x470 kernel/kernel/signal.c:550
     [<ffffffff8132067b>] ? recalc_sigpending_tsk+0x13b/0x180 kernel/kernel/signal.c:145
     [<ffffffff81309628>] do_group_exit+0x108/0x330 kernel/kernel/exit.c:880
     [<ffffffff8132b9d4>] get_signal+0x5e4/0x14f0 kernel/kernel/signal.c:2307
     [<     inline     >] ? kretprobe_table_lock kernel/kernel/kprobes.c:1113
     [<ffffffff8151d355>] ? kprobe_flush_task+0xb5/0x450 kernel/kernel/kprobes.c:1158
     [<ffffffff8115f7d3>] do_signal+0x83/0x1c90 kernel/arch/x86/kernel/signal.c:712
     [<ffffffff8151d2a0>] ? recycle_rp_inst+0x310/0x310 kernel/include/linux/list.h:655
     [<ffffffff8115f750>] ? setup_sigcontext+0x780/0x780 kernel/arch/x86/kernel/signal.c:165
     [<ffffffff81380864>] ? finish_task_switch+0x424/0x5f0 kernel/kernel/sched/core.c:2692
     [<     inline     >] ? finish_lock_switch kernel/kernel/sched/sched.h:1099
     [<ffffffff81380560>] ? finish_task_switch+0x120/0x5f0 kernel/kernel/sched/core.c:2678
     [<     inline     >] ? context_switch kernel/kernel/sched/core.c:2807
     [<ffffffff85d794e9>] ? __schedule+0x919/0x1bd0 kernel/kernel/sched/core.c:3283
     [<ffffffff81003901>] exit_to_usermode_loop+0xf1/0x1a0 kernel/arch/x86/entry/common.c:247
     [<     inline     >] prepare_exit_to_usermode kernel/arch/x86/entry/common.c:282
     [<ffffffff810062ef>] syscall_return_slowpath+0x19f/0x210 kernel/arch/x86/entry/common.c:344
     [<ffffffff85d88022>] int_ret_from_sys_call+0x25/0x9f kernel/arch/x86/entry/entry_64.S:281
    Memory state around the buggy address:
     ffff880064e21680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff880064e21700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff880064e21780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                           ^
     ffff880064e21800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff880064e21880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    Bug:28979703
    
    Fixes: 273ec51 ("net: ppp_generic - introduce net-namespace functionality v2")
    Reported-by: Baozeng Ding <sploving1@gmail.com>
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    (cherry picked from commit 1f461dc)
    
    Change-Id: Ib5a54fc1814b96ce6ebefcc6f63dfa92880503c0
  8. UPSTREAM: netfilter: x_tables: fix unconditional helper

    Florian Westphal committed with Thierry Strudel Mar 22, 2016
    Ben Hawkes says:
    
     In the mark_source_chains function (net/ipv4/netfilter/ip_tables.c) it
     is possible for a user-supplied ipt_entry structure to have a large
     next_offset field. This field is not bounds checked prior to writing a
     counter value at the supplied offset.
    
    Problem is that mark_source_chains should not have been called --
    the rule doesn't have a next entry, so its supposed to return
    an absolute verdict of either ACCEPT or DROP.
    
    However, the function conditional() doesn't work as the name implies.
    It only checks that the rule is using wildcard address matching.
    
    However, an unconditional rule must also not be using any matches
    (no -m args).
    
    The underflow validator only checked the addresses, therefore
    passing the 'unconditional absolute verdict' test, while
    mark_source_chains also tested for presence of matches, and thus
    proceeeded to the next (not-existent) rule.
    
    Unify this so that all the callers have same idea of 'unconditional rule'.
    
    Bug: 28940694
    
    Reported-by: Ben Hawkes <hawkes@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    (cherry picked from commit 54d83fc)
    
    Change-Id: I47ec0713ac563ac244200c7b2c54f09a91aceabc
  9. qcom: ssr: Fix possible overflow when copying firmware name

    Srinivasarao P committed with Thierry Strudel Jun 6, 2016
    Array overflow can occur in firmware_name_store(), if the variable
    buf contains the string larger than size of subsys->desc->fw_name
    
    Bug: 28675151
    Change-Id: Ice39d7a1eb0b5f53125cc5d528021a99b9f7ff90
    Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
  10. msm-core: debug: Fix the number of arguments for sysfs nodes

    Biswajit Paul committed with Thierry Strudel Jul 12, 2016
    Ptable and enable node parses the input arguments incorrectly. Parse the
    input message into exact number of arguments that are required for the
    respective nodes.
    
    Bug: 28967028
    CRs-fixed: 1032875
    Change-Id: I881f18217b703a497efa4799288dee39a28ea8ab
    Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org>
    Signed-off-by: Biswajit Paul <biswajitpaul@codeaurora.org>
  11. UPSTREAM: KEYS: Fix ASN.1 indefinite length object parsing

    dhowells committed with Thierry Strudel Feb 23, 2016
    This fixes CVE-2016-0758.
    
    In the ASN.1 decoder, when the length field of an ASN.1 value is extracted,
    it isn't validated against the remaining amount of data before being added
    to the cursor.  With a sufficiently large size indicated, the check:
    
    	datalen - dp < 2
    
    may then fail due to integer overflow.
    
    Fix this by checking the length indicated against the amount of remaining
    data in both places a definite length is determined.
    
    Whilst we're at it, make the following changes:
    
     (1) Check the maximum size of extended length does not exceed the capacity
         of the variable it's being stored in (len) rather than the type that
         variable is assumed to be (size_t).
    
     (2) Compare the EOC tag to the symbolic constant ASN1_EOC rather than the
         integer 0.
    
     (3) To reduce confusion, move the initialisation of len outside of:
    
    	for (len = 0; n > 0; n--) {
    
         since it doesn't have anything to do with the loop counter n.
    
    Bug: 29814470
    (cherry picked from commit 23c8a81)
    
    Change-Id: I09dc91c698365cff384560a6b41e4b3207597ce6
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Acked-by: David Woodhouse <David.Woodhouse@intel.com>
    Acked-by: Peter Jones <pjones@redhat.com>
  12. BACKPORT: unix: avoid use-after-free in ep_remove_wait_queue

    Rainer Weikusat committed with Thierry Strudel Nov 20, 2015
    Rainer Weikusat <rweikusat@mobileactivedefense.com> writes:
    An AF_UNIX datagram socket being the client in an n:1 association with
    some server socket is only allowed to send messages to the server if the
    receive queue of this socket contains at most sk_max_ack_backlog
    datagrams. This implies that prospective writers might be forced to go
    to sleep despite none of the message presently enqueued on the server
    receive queue were sent by them. In order to ensure that these will be
    woken up once space becomes again available, the present unix_dgram_poll
    routine does a second sock_poll_wait call with the peer_wait wait queue
    of the server socket as queue argument (unix_dgram_recvmsg does a wake
    up on this queue after a datagram was received). This is inherently
    problematic because the server socket is only guaranteed to remain alive
    for as long as the client still holds a reference to it. In case the
    connection is dissolved via connect or by the dead peer detection logic
    in unix_dgram_sendmsg, the server socket may be freed despite "the
    polling mechanism" (in particular, epoll) still has a pointer to the
    corresponding peer_wait queue. There's no way to forcibly deregister a
    wait queue with epoll.
    
    Based on an idea by Jason Baron, the patch below changes the code such
    that a wait_queue_t belonging to the client socket is enqueued on the
    peer_wait queue of the server whenever the peer receive queue full
    condition is detected by either a sendmsg or a poll. A wake up on the
    peer queue is then relayed to the ordinary wait queue of the client
    socket via wake function. The connection to the peer wait queue is again
    dissolved if either a wake up is about to be relayed or the client
    socket reconnects or a dead peer is detected or the client socket is
    itself closed. This enables removing the second sock_poll_wait from
    unix_dgram_poll, thus avoiding the use-after-free, while still ensuring
    that no blocked writer sleeps forever.
    
    Signed-off-by: Rainer Weikusat <rweikusat@mobileactivedefense.com>
    Fixes: ec0d215 ("af_unix: fix 'poll for write'/connected DGRAM sockets")
    Reviewed-by: Jason Baron <jbaron@akamai.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    
    Bug: 29119002
    (cherry picked from commit 7d26727)
    Signed-off-by: Aarthi Thiruvengadam <athiru@google.com>
    
    Change-Id: Ia374ee061195088f8c777940baa75cedbe897f4e
  13. BACKPORT: ASN.1: Fix non-match detection failure on data overrun

    dhowells committed with Thierry Strudel Aug 5, 2015
    If the ASN.1 decoder is asked to parse a sequence of objects, non-optional
    matches get skipped if there's no more data to be had rather than a
    data-overrun error being reported.
    
    This is due to the code segment that decides whether to skip optional
    matches (ie. matches that could get ignored because an element is marked
    OPTIONAL in the grammar) due to a lack of data also skips non-optional
    elements if the data pointer has reached the end of the buffer.
    
    This can be tested with the data decoder for the new RSA akcipher algorithm
    that takes three non-optional integers.  Currently, it skips the last
    integer if there is insufficient data.
    
    Without the fix, #defining DEBUG in asn1_decoder.c will show something
    like:
    
    	next_op: pc=0/13 dp=0/270 C=0 J=0
    	- match? 30 30 00
    	- TAG: 30 266 CONS
    	next_op: pc=2/13 dp=4/270 C=1 J=0
    	- match? 02 02 00
    	- TAG: 02 257
    	- LEAF: 257
    	next_op: pc=5/13 dp=265/270 C=1 J=0
    	- match? 02 02 00
    	- TAG: 02 3
    	- LEAF: 3
    	next_op: pc=8/13 dp=270/270 C=1 J=0
    	next_op: pc=11/13 dp=270/270 C=1 J=0
    	- end cons t=4 dp=270 l=270/270
    
    The next_op line for pc=8/13 should be followed by a match line.
    
    This is not exploitable for X.509 certificates by means of shortening the
    message and fixing up the ASN.1 CONS tags because:
    
     (1) The relevant records being built up are cleared before use.
    
     (2) If the message is shortened sufficiently to remove the public key, the
         ASN.1 parse of the RSA key will fail quickly due to a lack of data.
    
     (3) Extracted signature data is either turned into MPIs (which cope with a
         0 length) or is simpler integers specifying algoritms and suchlike
         (which can validly be 0); and
    
     (4) The AKID and SKID extensions are optional and their removal is handled
         without risking passing a NULL to asymmetric_key_generate_id().
    
     (5) If the certificate is truncated sufficiently to remove the subject,
         issuer or serialNumber then the ASN.1 decoder will fail with a 'Cons
         stack underflow' return.
    
    This is not exploitable for PKCS#7 messages by means of removal of elements
    from such a message from the tail end of a sequence:
    
     (1) Any shortened X.509 certs embedded in the PKCS#7 message are survivable
         as detailed above.
    
     (2) The message digest content isn't used if it shows a NULL pointer,
         similarly, the authattrs aren't used if that shows a NULL pointer.
    
     (3) A missing signature results in a NULL MPI - which the MPI routines deal
         with.
    
     (4) If data is NULL, it is expected that the message has detached content and
         that is handled appropriately.
    
     (5) If the serialNumber is excised, the unconditional action associated
         with it will pick up the containing SEQUENCE instead, so no NULL
         pointer will be seen here.
    
         If both the issuer and the serialNumber are excised, the ASN.1 decode
         will fail with an 'Unexpected tag' return.
    
         In either case, there's no way to get to asymmetric_key_generate_id()
         with a NULL pointer.
    
     (6) Other fields are decoded to simple integers.  Shortening the message
         to omit an algorithm ID field will cause checks on this to fail early
         in the verification process.
    
    This can also be tested by snipping objects off of the end of the ASN.1 stream
    such that mandatory tags are removed - or even from the end of internal
    SEQUENCEs.  If any mandatory tag is missing, the error EBADMSG *should* be
    produced.  Without this patch ERANGE or ENOPKG might be produced or the parse
    may apparently succeed, perhaps with ENOKEY or EKEYREJECTED being produced
    later, depending on what gets snipped.
    
    Just snipping off the final BIT_STRING or OCTET_STRING from either sample
    should be a start since both are mandatory and neither will cause an EBADMSG
    without the patches
    
    Reported-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: David Woodhouse <David.Woodhouse@intel.com>
    
    Bug: 28751627
    (cherry picked from commit 0d62e9d)
    Signed-off-by: Aarthi Thiruvengadam <athiru@google.com>
    Change-Id: Iaa02c662e60cf169b88fada050b887cad1b1c58f
Commits on Jul 14, 2016
  1. spmi: prevent showing the address of spmidev

    Biswajit Paul committed with Thierry Strudel Jun 15, 2016
    Creating devices with the address of the container spmidev is not
    indicative of the actual hardware device it represents.
    
    Instead use an unique id to indicate the device it represents.
    
    Bug: 28760543
    CRs-Fixed: 1024197
    Change-Id: Id18e2a19f4fa1249901a3f275defa8f589270d69
    Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
    Signed-off-by: Biswajit Paul <biswajitpaul@codeaurora.org>
Commits on Jun 20, 2016
  1. bullhead_defconfig: enable SECURITY_PERF_EVENTS_RESTRICT

    Mekala Natarajan committed with Thierry Strudel Jun 17, 2016
    Change-Id: If2de39c04ebc542479da547196cd292de972cb03
    Signed-off-by: Mekala Natarajan <mnatarajan@google.com>
  2. ANDROID: restrict access to perf events

    jeffvanderstoep committed with Thierry Strudel Jun 1, 2016
    Add:
    CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
    
    to android-base.cfg
    
    The kernel.perf_event_paranoid sysctl is set to 3 by default.
    No unprivileged use of the perf_event_open syscall will be
    permitted unless it is changed.
    
    Bug: 29054680
    Change-Id: Ie7512259150e146d8e382dc64d40e8faaa438917
  3. FROMLIST: security,perf: Allow further restriction of perf_event_open

    jeffvanderstoep committed with Thierry Strudel May 29, 2016
    When kernel.perf_event_open is set to 3 (or greater), disallow all
    access to performance events by users without CAP_SYS_ADMIN.
    Add a Kconfig symbol CONFIG_SECURITY_PERF_EVENTS_RESTRICT that
    makes this value the default.
    
    This is based on a similar feature in grsecurity
    (CONFIG_GRKERNSEC_PERF_HARDEN).  This version doesn't include making
    the variable read-only.  It also allows enabling further restriction
    at run-time regardless of whether the default is changed.
    
    https://lkml.org/lkml/2016/1/11/587
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    
    Bug: 29054680
    Change-Id: Iff5bff4fc1042e85866df9faa01bce8d04335ab8