lkml.org 
[lkml]   [2018]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 10/37] kaiser: ENOMEM if kaiser_pagetable_walk() NULL
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Hugh Dickins <hughd@google.com>


    kaiser_add_user_map() took no notice when kaiser_pagetable_walk() failed.
    And avoid its might_sleep() when atomic (though atomic at present unused).

    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/mm/kaiser.c | 10 +++++++---
    1 file changed, 7 insertions(+), 3 deletions(-)

    --- a/arch/x86/mm/kaiser.c
    +++ b/arch/x86/mm/kaiser.c
    @@ -99,11 +99,11 @@ static pte_t *kaiser_pagetable_walk(unsi
    pgd_t *pgd = native_get_shadow_pgd(pgd_offset_k(address));
    gfp_t gfp = (GFP_KERNEL | __GFP_NOTRACK | __GFP_ZERO);

    - might_sleep();
    if (is_atomic) {
    gfp &= ~GFP_KERNEL;
    gfp |= __GFP_HIGH | __GFP_ATOMIC;
    - }
    + } else
    + might_sleep();

    if (pgd_none(*pgd)) {
    WARN_ONCE(1, "All shadow pgds should have been populated");
    @@ -160,13 +160,17 @@ int kaiser_add_user_map(const void *__st
    unsigned long end_addr = PAGE_ALIGN(start_addr + size);
    unsigned long target_address;

    - for (;address < end_addr; address += PAGE_SIZE) {
    + for (; address < end_addr; address += PAGE_SIZE) {
    target_address = get_pa_from_mapping(address);
    if (target_address == -1) {
    ret = -EIO;
    break;
    }
    pte = kaiser_pagetable_walk(address, false);
    + if (!pte) {
    + ret = -ENOMEM;
    + break;
    + }
    if (pte_none(*pte)) {
    set_pte(pte, __pte(flags | target_address));
    } else {

    \
     
     \ /
      Last update: 2018-01-03 21:36    [W:2.245 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site