Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp5767029imm; Wed, 12 Sep 2018 10:45:36 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZiSjVXNHDFPBVSFD1ntMuGvsICIF54rYB8bvugbdrgtTlOdsWEodS3CJLH7DiCNaayvJ2F X-Received: by 2002:a62:565c:: with SMTP id k89-v6mr3613186pfb.212.1536774336158; Wed, 12 Sep 2018 10:45:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536774336; cv=none; d=google.com; s=arc-20160816; b=pdH3YEkpMOtMbT70TIpzfq6oxqexWnObmYRo+XJwX1NsOwXEAFYbn6AGwrUFNZgiTk KiC5ELJCF6sXLthCoekNV7Kt81GDbHaRNnTAskWBst7B04b45t+mRRaNVSwNUzaf1sDw YywJ/hRXEUa+IlEq2tOsZ6TQj6MTno8CwsoCptncXDGXIgvRCtVC5iSQsnq80C1GuF+4 Z8J/ofvElIjIVfcX4DSf60k7lRnt6R00EZzb6V4UUFKPDZuHYawKHj9KO0lQbzpxjNAK ZJRNdtDUsTEPFw4r8wWa/9N8LJHGbTTHTXXvdm6lkA5FWZBuaMzQrxe3M8lmpjkp025b wy7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature; bh=6LovSrH+spJzds4ijmcICpipT3pn5dTLPqngJWpGET8=; b=YEIXWeEaYXzGzATrgTlA62bmTlabHhBGh4+8uEF556seTEHGZzf0AJTVBq3w8c7XTZ /fhuFDOxjBl6ly0SpfzAmAYzZXoRF1tCIUyUSTGzj9x0Y3x79snIy+aba3rzucWBQBS7 T4es9UKvE0lanNL9af8EkY+EgdJWmPSv//65QIXiVyi633oZsYwT69ngOTP4rgLkrqB4 +vUzFxMRtk5StC7Qr5TCNXK3jNPJ7K2akhkPLGL4FSKT7eHBzwV18USN6Ve5sH6hZN+s osBi8p1G9lcv5ORTEO6Y2Rf1pJtdJcseKiIRHehk/WYhWlFGC0/P1MTDYTHuPVrMnJtx ozoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=XONv45NB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v20-v6si1718647pgk.682.2018.09.12.10.45.21; Wed, 12 Sep 2018 10:45:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=XONv45NB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727866AbeILWud (ORCPT + 99 others); Wed, 12 Sep 2018 18:50:33 -0400 Received: from mail-yb1-f194.google.com ([209.85.219.194]:43046 "EHLO mail-yb1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727332AbeILWud (ORCPT ); Wed, 12 Sep 2018 18:50:33 -0400 Received: by mail-yb1-f194.google.com with SMTP id k5-v6so2089709ybo.10 for ; Wed, 12 Sep 2018 10:44:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=6LovSrH+spJzds4ijmcICpipT3pn5dTLPqngJWpGET8=; b=XONv45NBHgTgMSfhUjVdWN9BTx8UvPo0j5ES9zg4hdNxn/BBYxDpu3YZ8ef18w/ann ZyttmhD/I6uk2x6kJf21uKhT3Xet5zgyRkQMyAYRwidu8J7ITIEJv403DjjwCuGv/aVs Z65eiOqAHhnTEkl6wE8vYoYQTVz77aq5o0bM8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=6LovSrH+spJzds4ijmcICpipT3pn5dTLPqngJWpGET8=; b=HpMCd+Zkdcw9O+KSj53WYppixOLMppYRIQ7NQf7TJUpfwqVA40TuwI9Hni/bSJuZnv xiTiZ3ulktOo/FgYGIs/7us/76LvJck24L1PrUFcTh7C1pjLdMoh2vN5TIRA/kiBuNdo PtVgJ0O5o0Se3u7gDzsiK//P0BqIrgNcIZbFlXyJyc2hmpzORZyms/E3oYSYPgMveOG1 Fo10pSR72fXeDIxrcrm0TxdLxnhUu15u0IuNzPmqWdNf9/o34yLX4LtMEth/69ozupuo CYjn29/hHn8LJCtMFM/LDOFTAlhxbgjCOof1MFXWo1lOi1OIrPK98Ige3UH6TM+gedFn 2TTg== X-Gm-Message-State: APzg51C5UO/o8EPClAJPSIqosHPNOAcb85bxiJjfm8q8Yp5Bcg6e9iYw S/viXGNLq6WN8hj57w7QCCLBZFOSU1w= X-Received: by 2002:a25:2ce:: with SMTP id 197-v6mr1458792ybc.215.1536774297605; Wed, 12 Sep 2018 10:44:57 -0700 (PDT) Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com. [209.85.219.179]) by smtp.gmail.com with ESMTPSA id u8-v6sm428539ywl.59.2018.09.12.10.44.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Sep 2018 10:44:55 -0700 (PDT) Received: by mail-yb1-f179.google.com with SMTP id d34-v6so2110274yba.3 for ; Wed, 12 Sep 2018 10:44:55 -0700 (PDT) X-Received: by 2002:a25:7d44:: with SMTP id y65-v6mr1525114ybc.421.1536774295167; Wed, 12 Sep 2018 10:44:55 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a25:5f04:0:0:0:0:0 with HTTP; Wed, 12 Sep 2018 10:44:54 -0700 (PDT) In-Reply-To: <1536723394-14616-1-git-send-email-bin.yang@intel.com> References: <1536723394-14616-1-git-send-email-bin.yang@intel.com> From: Kees Cook Date: Wed, 12 Sep 2018 10:44:54 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] pstore: fix incorrect persistent ram buffer mapping To: Bin Yang Cc: Anton Vorontsov , Colin Cross , Tony Luck , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 11, 2018 at 8:36 PM, Bin Yang wrote: > persistent_ram_vmap() returns the page start vaddr. > persistent_ram_iomap() supports non-page-aligned mapping. Oh, yes, good catch. This should probably be explicitly mentioned in comments for these functions. > persistent_ram_buffer_map() always adds offset-in-page to the vaddr > returned from these two functions, which causes incorrect mapping of > non-page-aligned persistent ram buffer. How did you find this problem, and/or how was the problem manifesting? > Signed-off-by: Bin Yang > --- > fs/pstore/ram_core.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c > index 951a14e..7c05fdd 100644 > --- a/fs/pstore/ram_core.c > +++ b/fs/pstore/ram_core.c > @@ -429,7 +429,7 @@ static void *persistent_ram_vmap(phys_addr_t start, size_t size, > vaddr = vmap(pages, page_count, VM_MAP, prot); > kfree(pages); > > - return vaddr; > + return vaddr + offset_in_page(start); > } > > static void *persistent_ram_iomap(phys_addr_t start, size_t size, > @@ -468,7 +468,7 @@ static int persistent_ram_buffer_map(phys_addr_t start, phys_addr_t size, > return -ENOMEM; > } > > - prz->buffer = prz->vaddr + offset_in_page(start); > + prz->buffer = prz->vaddr; > prz->buffer_size = size - sizeof(struct persistent_ram_buffer); > > return 0; > @@ -515,7 +515,7 @@ void persistent_ram_free(struct persistent_ram_zone *prz) > > if (prz->vaddr) { > if (pfn_valid(prz->paddr >> PAGE_SHIFT)) { > - vunmap(prz->vaddr); > + vunmap(prz->vaddr - offset_in_page(prz->paddr)); > } else { > iounmap(prz->vaddr); > release_mem_region(prz->paddr, prz->size); > -- > 2.7.4 > Regardless, yes, this patch looks correct. Thanks! I'll add it to my tree. -Kees -- Kees Cook Pixel Security