1. 16 Jan, 2017 39 commits
  2. 15 Jan, 2017 1 commit
    • Tetsuo Handa's avatar
      AppArmor: Use GFP_KERNEL for __aa_kvmalloc(). · a7f6c1b6
      Tetsuo Handa authored
      Calling kmalloc(GFP_NOIO) with order == PAGE_ALLOC_COSTLY_ORDER is not
      recommended because it might fall into infinite retry loop without
      invoking the OOM killer.
      
      Since aa_dfa_unpack() is the only caller of kvzalloc() and
      aa_dfa_unpack() which is calling kvzalloc() via unpack_table() is
      doing kzalloc(GFP_KERNEL), it is safe to use GFP_KERNEL from
      __aa_kvmalloc().
      
      Since aa_simple_write_to_buffer() is the only caller of kvmalloc()
      and aa_simple_write_to_buffer() is calling copy_from_user() which
      is GFP_KERNEL context (see memdup_user_nul()), it is safe to use
      GFP_KERNEL from __aa_kvmalloc().
      
      Therefore, replace GFP_NOIO with GFP_KERNEL. Also, since we have
      vmalloc() fallback, add __GFP_NORETRY so that we don't invoke the OOM
      killer by kmalloc(GFP_KERNEL) with order == PAGE_ALLOC_COSTLY_ORDER.
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
      a7f6c1b6