Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp693290pxx; Wed, 28 Oct 2020 14:42:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz+4FGrZYEbiBzkGjehpboYIJPrgDUguOJsPa5dbCaP+TYjlZYs1jhoI3wYiLqKlZW7YeLl X-Received: by 2002:aa7:dc12:: with SMTP id b18mr934215edu.295.1603921322473; Wed, 28 Oct 2020 14:42:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603921322; cv=none; d=google.com; s=arc-20160816; b=VIdSnk6sgpGQvsVeFOuuGEB7G8vRVnr+cqaUMqfiWC9VXjIDBvArjHlFqGj7h3PSiT o8q0rV/tarGGPd7EXu0ODzG7Tg+5wcPuM58pFNJz1He+haSwNnW2KO40hRr3qDymfSGC K9chxwkxwW1gLEtust6IErafb0erzNo2hXc0gz81VjU/91qn+K5y52qorHj3eevvzy5i HQAXfB0Dhyp2+zl3QdPysSh7EfIx6cRpNFpfUwpCQYBI+iIqbl2eXXgUq2YdzkzSku3F z7xD59R/G419r1aVZNBU5Ni7dteJdamt+/mg10/oVjQd+f0WMkOlrTPZoblwei8tbXkM rNPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=fyU3C0X3B3KixfhP3mE1hMwWy/q9ZulBRC+CMOazduI=; b=F0ZAqACnTnLAEevAQ0q+sgy+DqJ1hDls8w1GkFmJjdCDZk4YyOnC29YSK7vNnjnrZZ 9J/ldXgHYyvxNkRdYw8hfZRA+5bjtK5xSMOOJkD2z/SMTsnixP4TFFFQrXd1EdD6wZYj AXA2Wh9FPgLqmxhftW6zzyzoPfe+LfanPhtxMnsdzg3B1JZ4vZPsuRtW3aMLKVTsEiex 9aPT9U52TNcLBueuwSaWubU6FrFmqDaK85PvVF55KABqRdAaNI47Q8HuSSwXOGTLcGRf l9c9KdypyUyQejQDB5cNBPrZ2kpwJUQe/35RVJlY9waEj1tNaiAnCo9MpQs9fm/EwZuy mq9g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r26si426249ejb.125.2020.10.28.14.41.40; Wed, 28 Oct 2020 14:42:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1832904AbgJ0XGv (ORCPT + 99 others); Tue, 27 Oct 2020 19:06:51 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:45968 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1832900AbgJ0XGu (ORCPT ); Tue, 27 Oct 2020 19:06:50 -0400 Received: by mail-qt1-f194.google.com with SMTP id m14so2320963qtc.12 for ; Tue, 27 Oct 2020 16:06:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fyU3C0X3B3KixfhP3mE1hMwWy/q9ZulBRC+CMOazduI=; b=GgfkUTqJJoieNk9qWTBAM0blC+R1lUzFN7I4MCj2vaNy3IBHsDUN7xN9FKmFG6dPX0 4eu7jRvgxtmrtRkqIJdK8RW3WxGYCQiSJUhQDqWexX62TMs+bq7RkAoiwKVdVbTM/9u4 rkGs/aPayZnh/4swueK1nKqwG7YErATmc7Fz3VZHW2/piPJ+Ewi0k0ALtZz0bcbxFxQ0 vOEOldtmuvfZ20lpKiGAsDzpcPr6Z2+R7MxTnGtwMDQNJXn6T1QRStdV+Da7mkc5eWRw BuO0aWIuTQGluH0IP3im7pobXt7uw6BO4n6QLgkXnQkhx/zoaieFVTpEUmANP78P9Vvi 41Jw== X-Gm-Message-State: AOAM530qf3oREFYEwAnLX1Ra27iYB4x3cD+vsQ60q8Ri2LAZDqGXRL83 DVwNmhqdTWV50qVX3sLqHRYR554KT9v/CA== X-Received: by 2002:ac8:519a:: with SMTP id c26mr4347157qtn.270.1603840009608; Tue, 27 Oct 2020 16:06:49 -0700 (PDT) Received: from rani.riverdale.lan ([2001:470:1f07:5f3::b55f]) by smtp.gmail.com with ESMTPSA id k4sm1710236qkj.46.2020.10.27.16.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 16:06:49 -0700 (PDT) From: Arvind Sankar To: Dave Hansen , Andy Lutomirski , Peter Zijlstra , x86@kernel.org Cc: "Kirill A. Shutemov" , Joerg Roedel , linux-kernel@vger.kernel.org Subject: [PATCH] x86/mm/ident_map: Check for errors from ident_pud_init() Date: Tue, 27 Oct 2020 19:06:48 -0400 Message-Id: <20201027230648.1885111-1-nivedita@alum.mit.edu> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit ea3b5e60ce80 ("x86/mm/ident_map: Add 5-level paging support") added ident_p4d_init() to support 5-level paging, but this function doesn't check and return errors from ident_pud_init(). For example, the decompressor stub uses this code to create an identity mapping. If it runs out of pages while trying to allocate a PMD pagetable, the error will be currently ignored. Fix this to propagate errors. Signed-off-by: Arvind Sankar Fixes: ea3b5e60ce80 ("x86/mm/ident_map: Add 5-level paging support") --- arch/x86/mm/ident_map.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/ident_map.c b/arch/x86/mm/ident_map.c index fe7a12599d8e..5ecb0883cc88 100644 --- a/arch/x86/mm/ident_map.c +++ b/arch/x86/mm/ident_map.c @@ -62,6 +62,7 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page, unsigned long addr, unsigned long end) { unsigned long next; + int result; for (; addr < end; addr = next) { p4d_t *p4d = p4d_page + p4d_index(addr); @@ -73,13 +74,17 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page, if (p4d_present(*p4d)) { pud = pud_offset(p4d, 0); - ident_pud_init(info, pud, addr, next); + result = ident_pud_init(info, pud, addr, next); + if (result) + return result; continue; } pud = (pud_t *)info->alloc_pgt_page(info->context); if (!pud) return -ENOMEM; - ident_pud_init(info, pud, addr, next); + result = ident_pud_init(info, pud, addr, next); + if (result) + return result; set_p4d(p4d, __p4d(__pa(pud) | info->kernpg_flag)); } -- 2.26.2