Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964789AbcLMRTy (ORCPT ); Tue, 13 Dec 2016 12:19:54 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:57274 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936313AbcLMRQq (ORCPT ); Tue, 13 Dec 2016 12:16:46 -0500 From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dave Hansen , Pawel Lebioda , Hugh Dickins , Dan Williams Subject: [PATCH 4.8 11/33] device-dax: fix private mapping restriction, permit read-only Date: Tue, 13 Dec 2016 09:16:12 -0800 Message-Id: <20161213171534.646671474@linuxfoundation.org> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20161213171534.171564506@linuxfoundation.org> References: <20161213171534.171564506@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1402 Lines: 41 4.8-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dan Williams commit 325896ffdf90f7cbd59fb873b7ba20d60d1ddf3c upstream. Hugh notes in response to commit 4cb19355ea19 "device-dax: fail all private mapping attempts": "I think that is more restrictive than you intended: haven't tried, but I believe it rejects a PROT_READ, MAP_SHARED, O_RDONLY fd mmap, leaving no way to mmap /dev/dax without write permission to it." Indeed it does restrict read-only mappings, switch to checking VM_MAYSHARE, not VM_SHARED. Cc: Dave Hansen Cc: Pawel Lebioda Fixes: 4cb19355ea19 ("device-dax: fail all private mapping attempts") Reported-by: Hugh Dickins Signed-off-by: Dan Williams Signed-off-by: Greg Kroah-Hartman --- drivers/dax/dax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/dax/dax.c +++ b/drivers/dax/dax.c @@ -324,7 +324,7 @@ static int check_vma(struct dax_dev *dax return -ENXIO; /* prevent private mappings from being established */ - if ((vma->vm_flags & VM_SHARED) != VM_SHARED) { + if ((vma->vm_flags & VM_MAYSHARE) != VM_MAYSHARE) { dev_info(dev, "%s: %s: fail, attempted private mapping\n", current->comm, func); return -EINVAL;