Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp3738276imm; Mon, 2 Jul 2018 04:51:08 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKAm0gWWVGGlF7O7Ubd4eggnHs7H5ZVMl1orpouJVhe8LE96rBv/DVUD9TEwUFG6sQAcCIJ X-Received: by 2002:a17:902:2d24:: with SMTP id o33-v6mr25682676plb.14.1530532268900; Mon, 02 Jul 2018 04:51:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530532268; cv=none; d=google.com; s=arc-20160816; b=vZjNwmSdqJNEADR4O4ekPopp0/sip1XqUlPuFFyRJsK9B2HwQWgUC/H8akR+YtgZch DKkb0+kgAZBbxEePhJM1B3H/JRo7W9e5gArhbo/NcXV3qHjOgL45P/HoGOL0yx+MWnlX HXBkH5LbcBAwMyU8vf6voab6FlFU/U8oRtMU0vo6lTBHUyM+Hc4ElBe65xKLFi0kWXbx NKwAlYdsKBK76wjY9zTUIL/Nfh6DXW3R2f9PnniIWmlUMcZfBdxSBS1Yc2LkfaevDt/S PGQl7f8ZaQbVZ3ayu/CKWVJ5TtYMtHzKENwfflTjmZq3ox/2Jc1bvV6nCTjqzRy3D7a8 /Bqw== 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:message-id:subject:cc :to:from:date:arc-authentication-results; bh=PkpgSW8opXafSWdOQ7Lfastk0L/0c8tPl+G9yXAxjIE=; b=j4t+JTZGUDDR3Nsvnz4YIKH5EylPUdhNcGahdwYAxmauZ3cDYbS9ULO+V5cn9zszG5 Bg1mMvfblOGRMUQbfUZ+vDghwQaMZyuAMfsvLAb4ksN1ahDUl/66FsPQ26Hl51QwLsz1 X1R2G0kMWxx5woIF/ihQdcRcr+G3z5srOKaYQyFP5AhBV8apw6O9iiY0oEMdMdW7oul7 kmOSJUwThOeMJpKQTWQ8Tk9nSSvI4CUy14yhgHkGblFvxhTt90TZRwBResc49aPMHMvt PFOId107m7npB8RjlyeMb/p6eF0A7LJ/I/lTzjmCoG4BVxOgVm2yunxCIeHToRz7Mkz7 3DqQ== 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 h5-v6si4920274pfd.112.2018.07.02.04.50.54; Mon, 02 Jul 2018 04:51:08 -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; 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 S965343AbeGBLXb (ORCPT + 99 others); Mon, 2 Jul 2018 07:23:31 -0400 Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:43098 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965131AbeGBLXa (ORCPT ); Mon, 2 Jul 2018 07:23:30 -0400 Received: from valkosipuli.localdomain (valkosipuli.retiisi.org.uk [IPv6:2001:1bc8:1a6:d3d5::80:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by hillosipuli.retiisi.org.uk (Postfix) with ESMTPS id 1C155634C83; Mon, 2 Jul 2018 14:23:28 +0300 (EEST) Received: from sakke by valkosipuli.localdomain with local (Exim 4.89) (envelope-from ) id 1fZwvX-0001Uk-T9; Mon, 02 Jul 2018 14:23:27 +0300 Date: Mon, 2 Jul 2018 14:23:27 +0300 From: Sakari Ailus To: Steve Longerbeam Cc: linux-media@vger.kernel.org, Steve Longerbeam , linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 15/17] media: platform: Switch to v4l2_async_notifier_add_subdev Message-ID: <20180702112327.3rzfxmhghoakbcyz@valkosipuli.retiisi.org.uk> References: <1530298220-5097-1-git-send-email-steve_longerbeam@mentor.com> <1530298220-5097-16-git-send-email-steve_longerbeam@mentor.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1530298220-5097-16-git-send-email-steve_longerbeam@mentor.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 29, 2018 at 11:49:59AM -0700, Steve Longerbeam wrote: > diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c > index a96f53c..8464ceb 100644 > --- a/drivers/media/platform/davinci/vpif_capture.c > +++ b/drivers/media/platform/davinci/vpif_capture.c > @@ -1553,7 +1553,7 @@ vpif_capture_get_pdata(struct platform_device *pdev) > sizeof(*chan->inputs), > GFP_KERNEL); > if (!chan->inputs) > - return NULL; > + goto err_cleanup; > > chan->input_count++; > chan->inputs[i].input.type = V4L2_INPUT_TYPE_CAMERA; > @@ -1587,28 +1587,30 @@ vpif_capture_get_pdata(struct platform_device *pdev) > rem->name, rem); > sdinfo->name = rem->full_name; > > - pdata->asd[i] = devm_kzalloc(&pdev->dev, > - sizeof(struct v4l2_async_subdev), > - GFP_KERNEL); > - if (!pdata->asd[i]) { > + pdata->asd[i] = v4l2_async_notifier_add_fwnode_subdev( > + &vpif_obj.notifier, of_fwnode_handle(rem), > + sizeof(struct v4l2_async_subdev)); > + if (IS_ERR(pdata->asd[i])) { > of_node_put(rem); > - pdata = NULL; > - goto done; > + goto err_cleanup; > } > > - pdata->asd[i]->match_type = V4L2_ASYNC_MATCH_FWNODE; > - pdata->asd[i]->match.fwnode = of_fwnode_handle(rem); > - of_node_put(rem); > + of_node_put(endpoint); You end up putting the same endpoint twice in the successful case. One way to address that would be to get the OF node's remote port parent (i.e. the device) immediately so you can forget OF node use counts in error handling. > } > > done: > - if (pdata) { > - pdata->asd_sizes[0] = i; > - pdata->subdev_count = i; > - pdata->card_name = "DA850/OMAP-L138 Video Capture"; > - } > + of_node_put(endpoint); > + pdata->asd_sizes[0] = i; > + pdata->subdev_count = i; > + pdata->card_name = "DA850/OMAP-L138 Video Capture"; > > return pdata; > + > +err_cleanup: > + v4l2_async_notifier_cleanup(&vpif_obj.notifier); > + of_node_put(endpoint); > + > + return NULL; > } -- Sakari Ailus e-mail: sakari.ailus@iki.fi