Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1774569imm; Wed, 16 May 2018 02:54:15 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoyv63WTkMilN/7XD0p6P32sIlJwnRdgfu4liKv+ZfdlfN14wmwmIJdA6EhzOaURTRX/wCK X-Received: by 2002:a17:902:683:: with SMTP id 3-v6mr179994plh.291.1526464455403; Wed, 16 May 2018 02:54:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526464455; cv=none; d=google.com; s=arc-20160816; b=CQ3H+YUaAHhOX0ceavPHrwMqi2eGxl+He4+eEHKFlXVyqbECORmHWNviu0MyYJrKLc 2tSzN0/WKMFoQTIlr4ohW6S+BRS45gcT6RAaMV3anRN2awNIr8ZbAtGQ/ojYluJQYS4Q bx8B5S3DwA/lnGgu+K6lW5dbUxJKI5O35s01LiUrroyglrPwj9slojlyehYu2pk7WIvB 1k1+SkrLI/nWasPhEiZOoGSUmPJQ+VbvShJ1SuY7KL+VWfeQhAaiOqYp3l2EGPKurH1X 4nETSgP+MYbllhUF7GU03fV3i3SrTnfmSX4irjYuaUjklun8FbMmT6yNe8DF2vov+EbH ItpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=SOr827T3kiF1nBC85X7C0KkZmSKbYqfP8K9UOFsAWmg=; b=u3dPDsFjheg3nQLfxRJ6tCusY8Fy2BGPV5FrGiwxjj4ZRH7evPI6zv+K3GamUJL6p/ ww5hTryOjSckx3SknJM5DWfLAjObnVN117AqdY9+zfKeKW0RQiczN0jurkJiX/Q17Tgo UrMX8RGoAln/sOM9sio4XFSgKdEtbHrsyIbKnp4UjouEFreGRoeZ58VoN8zmrdFSd7SJ o7Nfw2KIe2221XggRB6p2KiqLOFV+QrQNm0NkSTh8ihmp7Hlf0ax9MIXE1p+Wqj8J46h Bumo6DRLtjqY6wfwgQLxvlFUmbz5BGx1G34un+RrZLOx5/jND51m+XuX9p+pg9x6YkB7 Ea3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=aTGcpxD9; 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 p84-v6si2297988pfa.180.2018.05.16.02.54.00; Wed, 16 May 2018 02:54:15 -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=fail header.i=@ffwll.ch header.s=google header.b=aTGcpxD9; 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 S1753349AbeEPJxY (ORCPT + 99 others); Wed, 16 May 2018 05:53:24 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:33213 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753265AbeEPJxH (ORCPT ); Wed, 16 May 2018 05:53:07 -0400 Received: by mail-wm0-f68.google.com with SMTP id x12-v6so223678wmc.0 for ; Wed, 16 May 2018 02:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=SOr827T3kiF1nBC85X7C0KkZmSKbYqfP8K9UOFsAWmg=; b=aTGcpxD98Q3BdjLKM8QNL/MscjeK1fF2Wxtry365VWFHgHU6yPEN8xwEegNeH82i5d 2ZYwflctK2IqY+12SvZnStEpj+3idic6lUwfIkhU9IuRCQ/BL+TcXEUY+WLFQ69/X4Gx MKpriWYsvWbfU/APnTR2C5YZBlS+t4nzOyW5M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=SOr827T3kiF1nBC85X7C0KkZmSKbYqfP8K9UOFsAWmg=; b=UVMUImrDT61haGrivZu9JHMC1MIfBdNFa5XnjFA6146OP5vbGOj7oHj2DJypjH6g2j FKwRsZUpy5X7NgWeecdcuuOVhP9qdExK3zD1rPDQC+kDSYGVE2l1ANJo45vJu02lQxu2 SAfjTesSxAHyU9ez8LHxp49zAWMBGwoZIg98lpgmrfM5Z/VNYgYNxTGBFwHl773m5nv2 ISHz/EQG823jf+0zU9Mm/I9lyRf7C7js/fpQq7Jt20Q+ppELcppWm0mbqX4NU+NvK/MC aDlKc4OJmjaJezWV0+M6TyhgQQ6VvPrSbqL5OB8xKa3sSSo1L+XB69ojsD08bxgOu1F7 mdRw== X-Gm-Message-State: ALKqPwfe857rt+C+2GLC90TKWbk/9v+915KhCmLcybD760gMeEBj4nT+ 4O+UKvOP8tHEw0/r9uJu3DgAaw== X-Received: by 2002:a50:a2e5:: with SMTP id 92-v6mr264121edm.82.1526464386529; Wed, 16 May 2018 02:53:06 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:5628:0:d0c7:bcda:eea:9e5d]) by smtp.gmail.com with ESMTPSA id v22-v6sm1127102edq.15.2018.05.16.02.53.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 16 May 2018 02:53:05 -0700 (PDT) Date: Wed, 16 May 2018 11:53:03 +0200 From: Daniel Vetter To: Christoph Hellwig Cc: Souptick Joarder , Matthew Wilcox , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, devel@lists.orangefs.org, ceph-devel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-mtd@lists.infradead.org, dri-devel@lists.freedesktop.org, lustre-devel@lists.lustre.org, linux-arm-kernel@lists.infradead.org, linux-s390@vger.kernel.org Subject: Re: [PATCH 10/14] vgem: separate errno from VM_FAULT_* values Message-ID: <20180516095303.GH3438@phenom.ffwll.local> Mail-Followup-To: Christoph Hellwig , Souptick Joarder , Matthew Wilcox , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, devel@lists.orangefs.org, ceph-devel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-mtd@lists.infradead.org, dri-devel@lists.freedesktop.org, lustre-devel@lists.lustre.org, linux-arm-kernel@lists.infradead.org, linux-s390@vger.kernel.org References: <20180516054348.15950-1-hch@lst.de> <20180516054348.15950-11-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180516054348.15950-11-hch@lst.de> X-Operating-System: Linux phenom 4.15.0-3-amd64 User-Agent: Mutt/1.9.5 (2018-04-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 16, 2018 at 07:43:44AM +0200, Christoph Hellwig wrote: > And streamline the code in vgem_fault with early returns so that it is > a little bit more readable. > > Signed-off-by: Christoph Hellwig > --- > drivers/gpu/drm/vgem/vgem_drv.c | 51 +++++++++++++++------------------ > 1 file changed, 23 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c > index 2524ff116f00..a261e0aab83a 100644 > --- a/drivers/gpu/drm/vgem/vgem_drv.c > +++ b/drivers/gpu/drm/vgem/vgem_drv.c > @@ -61,12 +61,13 @@ static void vgem_gem_free_object(struct drm_gem_object *obj) > kfree(vgem_obj); > } > > -static int vgem_gem_fault(struct vm_fault *vmf) > +static vm_fault_t vgem_gem_fault(struct vm_fault *vmf) > { > struct vm_area_struct *vma = vmf->vma; > struct drm_vgem_gem_object *obj = vma->vm_private_data; > /* We don't use vmf->pgoff since that has the fake offset */ > unsigned long vaddr = vmf->address; > + struct page *page; > int ret; > loff_t num_pages; > pgoff_t page_offset; > @@ -85,35 +86,29 @@ static int vgem_gem_fault(struct vm_fault *vmf) > ret = 0; > } > mutex_unlock(&obj->pages_lock); > - if (ret) { > - struct page *page; > - > - page = shmem_read_mapping_page( > - file_inode(obj->base.filp)->i_mapping, > - page_offset); > - if (!IS_ERR(page)) { > - vmf->page = page; > - ret = 0; > - } else switch (PTR_ERR(page)) { > - case -ENOSPC: > - case -ENOMEM: > - ret = VM_FAULT_OOM; > - break; > - case -EBUSY: > - ret = VM_FAULT_RETRY; > - break; > - case -EFAULT: > - case -EINVAL: > - ret = VM_FAULT_SIGBUS; > - break; > - default: > - WARN_ON(PTR_ERR(page)); > - ret = VM_FAULT_SIGBUS; > - break; > - } > + if (!ret) > + return 0; > + > + page = shmem_read_mapping_page(file_inode(obj->base.filp)->i_mapping, > + page_offset); > + if (!IS_ERR(page)) { > + vmf->page = page; > + return 0; > + } > > + switch (PTR_ERR(page)) { > + case -ENOSPC: > + case -ENOMEM: > + return VM_FAULT_OOM; > + case -EBUSY: > + return VM_FAULT_RETRY; > + case -EFAULT: > + case -EINVAL: > + return VM_FAULT_SIGBUS; > + default: > + WARN_ON(PTR_ERR(page)); > + return VM_FAULT_SIGBUS; > } > - return ret; Reviewed-by: Daniel Vetter Want me to merge this through drm-misc or plan to pick it up yourself? -Daniel > } > > static const struct vm_operations_struct vgem_gem_vm_ops = { > -- > 2.17.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch