Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3454669pxk; Mon, 28 Sep 2020 19:06:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxe6HzJHDSJyB4/djvDlHnltj/tD/GBQ8+ZoVRSdzD/Vrj6jp8Rz/RCksTK3rprlXBj7Me X-Received: by 2002:aa7:ce97:: with SMTP id y23mr926701edv.128.1601345213362; Mon, 28 Sep 2020 19:06:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601345213; cv=none; d=google.com; s=arc-20160816; b=l4Hc43PR+CV91A8DG3R9EZraRLKgWMu4DFdSCw+kCVMf2rDq0K9gbMAZIdEYuf4795 kU009HavJo3vK1BcoeRzJlku0FbFP0I+dn6Z1W9K/4tZlLJie0WtGGU3TCJ6PRmCK8ev QfrjOVFuyq9TZlJ6SUXmuJGtSBaxyZ77xtydCfDUkd4cV8FjOz6NWaGQXQ52P7l7eRQH d1eHSe6TmqpB5Ve0QbWaZCyI8G8HuRezEDi4uRjHlcZdKACi6zeBK7H0+j+Y1nhwbFva 2gahB3fm23b7zE/+zI+nsSvxyD+bNhGCPLfi5fnGsxI9zhIA5A+fY888dFiQrVVAMzXI +qzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=iDhv+ozgLfJpz4ReM/64bivezuXaXXhI3uaVkJqD6ls=; b=PeMN051le9YrW1Eaw+fP500Nh5r0zWgmMiYsWGr7nY6mvay3HKb844NiESZ4KUChEo axSu3yaR9heLi/dvGr7FtRo12bU5zy5AQmpHSlbbWd9qpQxyesPfcIQwAn+manPRPf7a nkidiSOOvCUY1xD4JK+gnRxoCnMVkckLOjg9HW5HS5tylTVG8qh/r0UCNfPw+d4x3b9w n0M5enl2mkvsGO0885yZYjO31SqCHyGRhl+cIaE17zDYNkN88HDbzFZMTyI4QSP6/COD XKewUDJutZcdjI0jkBSq6+EeVEChg+xyBIm9hr4zXPFj5qmZiHJuULoKz+DhXGGQKlln pFyQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ElzTpIgl; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cx6si1853279edb.437.2020.09.28.19.06.23; Mon, 28 Sep 2020 19:06:53 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ElzTpIgl; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727293AbgI2CEw (ORCPT + 99 others); Mon, 28 Sep 2020 22:04:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726961AbgI2CEw (ORCPT ); Mon, 28 Sep 2020 22:04:52 -0400 Received: from mail-vs1-xe44.google.com (mail-vs1-xe44.google.com [IPv6:2607:f8b0:4864:20::e44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 530EBC061755; Mon, 28 Sep 2020 19:04:52 -0700 (PDT) Received: by mail-vs1-xe44.google.com with SMTP id y190so2026978vsy.1; Mon, 28 Sep 2020 19:04:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=iDhv+ozgLfJpz4ReM/64bivezuXaXXhI3uaVkJqD6ls=; b=ElzTpIglC+vmQlt1o4Loci+G0xfVId1TvwEqqaq9K2WDKtIa9s/LqIro0Fr2c73mVn kmhkY9wYhFBx8SLb+/vdoOGgOLpEv8t6yt8jtquj71p3kzrlKl+Wl+REsmWjuuZ1XBUD TMLpUWCLSaojzcxUGI4TIWNmUb0MH8Krs0tUvv8CAjBtoak+oQQ21aC5RfyLBIpJ3C55 mPtRWvnb9PjSzLLQn0xBj8juntZIieZH7daRO0vmOv70RxDXTKXUMWsfo9rdlpUglp73 VjmwWGFYZJGsHB64AqjSAdayBHKQkf3SzoRzMHpuVWbwG2L9vT/AxdfHrO+o6iiVip3B LPYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iDhv+ozgLfJpz4ReM/64bivezuXaXXhI3uaVkJqD6ls=; b=UB7yyfgfPhLVD37HQWH1Eb8oyxG68J5gys1zBcgFBsIFXi77MaZc7TKsjTIEj8x6H6 iJUiKv2kQnSwn3kCq4pD8w60/eUQJ/7HS7ifMRPcZisUxg6bflYigB+MOg3GC9GXXIDg xiH3fUaoxYCOKUMtJicLORoSxBR9FqHFWSvXiUzZ4OdISXCJyuDSemRKPjzGD3SndLx9 Vdgihyrsc4TNtISe+VO9GlF3RqP9TzD6GXwxy5haCa67R38yP51wuW6wYq2BNof9bMYL LWrg7iN76uAq4G1BJ8rxsDiuiS0FJrtsAljGxswFJ9keUa7bU67T49dH8hTQuaDdJKTO wlcw== X-Gm-Message-State: AOAM531sQenUbFzKysHTPYihXZCxbL2IZZ6V3NPRvsXqfl23h0sd7CNk yhFVZk59CwY75QcAxJF1lF699QZoIhdF8TK8SQ8= X-Received: by 2002:a67:1bc4:: with SMTP id b187mr1540419vsb.59.1601345091353; Mon, 28 Sep 2020 19:04:51 -0700 (PDT) MIME-Version: 1.0 References: <1601219284-13275-1-git-send-email-jrdr.linux@gmail.com> <20200928083757.GA18329@kadam> In-Reply-To: <20200928083757.GA18329@kadam> From: Souptick Joarder Date: Tue, 29 Sep 2020 07:34:39 +0530 Message-ID: Subject: Re: [PATCH] media: atomisp: Fixed error handling path To: Dan Carpenter Cc: mchehab@kernel.org, sakari.ailus@linux.intel.com, Greg KH , daniel.m.jordan@oracle.com, Andrew Morton , Michel Lespinasse , gustavoars@kernel.org, linux-media@vger.kernel.org, "open list:ANDROID DRIVERS" , linux-kernel@vger.kernel.org, John Hubbard , Ira Weiny Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dan, On Mon, Sep 28, 2020 at 2:08 PM Dan Carpenter wrote: > > On Sun, Sep 27, 2020 at 08:38:04PM +0530, Souptick Joarder wrote: > > Inside alloc_user_pages() based on flag value either pin_user_pages() > > or get_user_pages_fast() will be called. However, these API might fail. > > > > But free_user_pages() called in error handling path doesn't bother > > about return value and will try to unpin bo->pgnr pages, which is > > incorrect. > > > > Fix this by passing the page_nr to free_user_pages(). If page_nr > 0 > > pages will be unpinned based on bo->mem_type. This will also take care > > of non error handling path. > > > > Fixes: 14a638ab96c5 ("media: atomisp: use pin_user_pages() for memory > > allocation") > > Signed-off-by: Souptick Joarder > > Cc: John Hubbard > > Cc: Ira Weiny > > Cc: Dan Carpenter > > --- > > drivers/staging/media/atomisp/pci/hmm/hmm_bo.c | 13 ++++++++----- > > 1 file changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c > > index f13af23..0168f98 100644 > > --- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c > > +++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c > > @@ -857,16 +857,17 @@ static void free_private_pages(struct hmm_buffer_object *bo, > > kfree(bo->page_obj); > > } > > > > -static void free_user_pages(struct hmm_buffer_object *bo) > > +static void free_user_pages(struct hmm_buffer_object *bo, > > + unsigned int page_nr) > > { > > int i; > > > > hmm_mem_stat.usr_size -= bo->pgnr; > ^^^^^^^^^^^ > This is still a problem. It needs to be hmm_mem_stat.usr_size -= page_nr. In failure path, it is hmm_mem_stat.usr_size += bo->pgnr. I think, hmm_mem_stat.usr_size -= bo->pgnr is correct as per existing code. Do you think that needs to be changed ? > > regards, > dan carpenter > > > > > if (bo->mem_type == HMM_BO_MEM_TYPE_PFN) { > > - unpin_user_pages(bo->pages, bo->pgnr); > > + unpin_user_pages(bo->pages, page_nr); > > } else { > > - for (i = 0; i < bo->pgnr; i++) > > + for (i = 0; i < page_nr; i++) > > put_page(bo->pages[i]); > > } > > kfree(bo->pages); >