Received: by 10.223.176.46 with SMTP id f43csp2244329wra; Sun, 21 Jan 2018 15:08:24 -0800 (PST) X-Google-Smtp-Source: AH8x227tj3h3raIpvT1UHHrEAN5cxkMBgvHSdtQ5mvL9v+r3yTz68TZ2a1DaVuaiXiYbzT7hmQsg X-Received: by 10.98.178.17 with SMTP id x17mr6459115pfe.57.1516576104222; Sun, 21 Jan 2018 15:08:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516576104; cv=none; d=google.com; s=arc-20160816; b=W66QNnG7TymJHs6eSkjk34L8JQOXVdTywOCxA/nyfZrtN+ZxgxZGBQr8YE4MxRULEG tx4AqqNNVMWaAnarcM/MVj0lC+GSzIqHS3UeBqeLYG/e1X2u/k7/oommO3Pm8IDwxH7i VTwE9PeXbUnarr/0glKi3y27TJ41m/jfiePefaNt9bhIVI2l6PWwH/eQlRi0Bf0YbrpA cGNhq0YJ+wEwQELuJ20GCGWs9YmutypA88QnAb28Mq1I2zJ99prI+lrfqC4TqWwL1Ehf 6tuJIk5o9kZcbLy5FjCgEiIjHw3Nhbkgnf4CRuOu8hw1+BC8tN8LelPSllYfsvDmqGbJ T2Iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=agvbExbfzrrIEO2nVZhDEp/QmmdYNSq9xA7DtRCxbpM=; b=KsV1YmADRLLQe65ITd9zR6GzOeuniv2oRyUp8n5pdVt7OEHddbzSX87gyJL0rZOmq4 02+saoqGXRbyIbfCiQfgf46NV3VGCQUEeoIIr1aVUYr/qNdvwowYr3/iU1mfdOLsahN7 4mlqfR8IbSZZCLjclA6eziTzsT0GPqopML/xacLvSSryr2O2SnMr/fPc1RTc9Fflm357 vkpWAPjoHa88lorPyE6EWgjlKt9sXf15HYycFgN6Im1TsuVIWLUuPiF8FXaoqEsZLJrq jcJj1pCSCPftO6e0Pyn2SNomze85jjldZd/8PEGFVfRgm7vmTeIY81fuXrA92MKGNbEH +UZA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g7-v6si2851009plm.520.2018.01.21.15.08.10; Sun, 21 Jan 2018 15:08:24 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751169AbeAUXHS (ORCPT + 99 others); Sun, 21 Jan 2018 18:07:18 -0500 Received: from smtp2.provo.novell.com ([137.65.250.81]:41528 "EHLO smtp2.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751028AbeAUXHO (ORCPT ); Sun, 21 Jan 2018 18:07:14 -0500 Received: from localhost.localdomain (prv-ext-foundry1int.gns.novell.com [137.65.251.240]) by smtp2.provo.novell.com with ESMTP (TLS encrypted); Sun, 21 Jan 2018 16:07:05 -0700 From: Davidlohr Bueso To: starvik@axis.com, jesper.nilsson@axis.com, akpm@linux-foundation.org Cc: viro@zeniv.linux.org.uk, linux-cris-kernel@axis.com, linux-kernel@vger.kernel.org, Davidlohr Bueso , Davidlohr Bueso Subject: [PATCH] arch/cris: use get_user_pages_fast() Date: Sun, 21 Jan 2018 14:59:29 -0800 Message-Id: <20180121225929.11782-1-dave@stgolabs.net> X-Mailer: git-send-email 2.13.6 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since we currently hold mmap_sem across both gup calls (and nothing more), we can substitute it with two _fast() alternatives and possibly avoid grabbing the lock. This was found while adding mmap_sem wrappers, and was also previously reported by Al: https://lkml.org/lkml/2017/11/17/777 Signed-off-by: Davidlohr Bueso --- arch/cris/arch-v32/drivers/cryptocop.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/arch/cris/arch-v32/drivers/cryptocop.c b/arch/cris/arch-v32/drivers/cryptocop.c index d688fe117dca..76f8d3b1d39e 100644 --- a/arch/cris/arch-v32/drivers/cryptocop.c +++ b/arch/cris/arch-v32/drivers/cryptocop.c @@ -2717,37 +2717,28 @@ static int cryptocop_ioctl_process(struct inode *inode, struct file *filp, unsig } } - /* Acquire the mm page semaphore. */ - down_read(¤t->mm->mmap_sem); - - err = get_user_pages((unsigned long int)(oper.indata + prev_ix), - noinpages, - 0, /* read access only for in data */ - inpages, - NULL); + err = get_user_pages_fast((unsigned long int)(oper.indata + prev_ix), + noinpages, + 0, /* read access only for in data */ + inpages); if (err < 0) { - up_read(¤t->mm->mmap_sem); nooutpages = noinpages = 0; - DEBUG_API(printk("cryptocop_ioctl_process: get_user_pages indata\n")); + DEBUG_API(printk("cryptocop_ioctl_process: get_user_pages_fast indata\n")); goto error_cleanup; } noinpages = err; if (oper.do_cipher){ - err = get_user_pages((unsigned long int)oper.cipher_outdata, - nooutpages, - FOLL_WRITE, /* write access for out data */ - outpages, - NULL); - up_read(¤t->mm->mmap_sem); + err = get_user_pages_fast((unsigned long int)oper.cipher_outdata, + nooutpages, + FOLL_WRITE, /* write access for out data */ + outpages); if (err < 0) { nooutpages = 0; - DEBUG_API(printk("cryptocop_ioctl_process: get_user_pages outdata\n")); + DEBUG_API(printk("cryptocop_ioctl_process: get_user_pages_fast outdata\n")); goto error_cleanup; } nooutpages = err; - } else { - up_read(¤t->mm->mmap_sem); } /* Add 6 to nooutpages to make room for possibly inserted buffers for storing digest and -- 2.13.6