Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp12446496rwb; Sat, 26 Nov 2022 09:08:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf6NxZNhxNeEraklHjJm6Jm2xvDFJFmPjVydp9JBOC6DwgYKReU6umIjkmnYbbJRSGsnTk1v X-Received: by 2002:a63:f962:0:b0:477:1bb8:bbf4 with SMTP id q34-20020a63f962000000b004771bb8bbf4mr20906406pgk.19.1669482539124; Sat, 26 Nov 2022 09:08:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669482539; cv=none; d=google.com; s=arc-20160816; b=rOqyiHx5afk0+lO8sRXld68zNScbsh2lELoN+EVxdb6tcamqcKL/McC4syyDMzQpE5 wBT9fSODeG8LGXodp9AXL+/w9dcoxPeBCmRgksXicx+J2QuSKauBfwGRq3KkCAi/Wg+c /bcV/MMR8VKIJljve0T2Ok5P41JqmHVksQKeauyj1Zd5U7a6fwIM4sEMXW7KvNH8kRT7 yxrKK99imfa1cp1tb9p+UiDO/xtvOnmQKhCX31aYq5C//Q9MicS/6ODpZDkQRm7zNzUE 8775IonT5LUNaKtuxRZ3adqzbr7qgOnZaH237gGrnV1A20q9HdX8I9WH8uTvUViISl/i Rolw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=afYyqnESstPYF0qp8DiQpmjfKKmBgKX2qGLEWL9vw/8=; b=Mo/GovKQb8eVnigojbf9Q8pDKpOezcZ4zdI2ScT6o+OS/XqaYth1a9j+zZw6ozWNRP GHqOZ7/wi+0WM5fNIKS+iyqhdBraG8jvmBR3zd+pHQsaF2kmo/u3ov5gPcYbo9ijSYmm af+V9uHyAMG+A2khcK9J54SZQBSyqAGqHxD45VFk7XduI8fHf2dW3StmKpfamVeYGKiq gxCeaEIOgsmmQww+//yhwLbLnQRvy2a4NL5hN6xViiFu5fj5p41NsggMJuldQ7P1CSoJ GbI53/djaTRmt7Se7dbT+jJxspMPmsaQpbrNPjjokRMTT2qDx3nkTvBJhxuFrEuwugCD m5DQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lunn.ch header.s=20171124 header.b=zdEytqfZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lunn.ch Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h6-20020a636c06000000b004349119ea7bsi6790909pgc.401.2022.11.26.09.08.48; Sat, 26 Nov 2022 09:08:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@lunn.ch header.s=20171124 header.b=zdEytqfZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lunn.ch Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229743AbiKZQwG (ORCPT + 85 others); Sat, 26 Nov 2022 11:52:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229734AbiKZQwD (ORCPT ); Sat, 26 Nov 2022 11:52:03 -0500 Received: from vps0.lunn.ch (vps0.lunn.ch [156.67.10.101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 240C417E0A; Sat, 26 Nov 2022 08:51:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Disposition:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:From:Sender:Reply-To:Subject: Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Content-Disposition:In-Reply-To:References; bh=afYyqnESstPYF0qp8DiQpmjfKKmBgKX2qGLEWL9vw/8=; b=zdEytqfZTLJ4ycL/DZABrwe23e 8z8uxB8pggswChhbz47AJg1vixjvQx0Ct54WwSzEu0ZOScALhrW8NxvIqNj5YX5a6qjMK6OUjDJek yjPByU76BjsfMgUxKBfnhry6aOrICOswz8qO/bdNxTk+XMESHimui67GhSA4dOuauW0g=; Received: from andrew by vps0.lunn.ch with local (Exim 4.94.2) (envelope-from ) id 1oyyOv-003WSK-I0; Sat, 26 Nov 2022 17:51:37 +0100 Date: Sat, 26 Nov 2022 17:51:37 +0100 From: Andrew Lunn To: Vincent Mailhol Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , linux-kernel@vger.kernel.org, Greg Kroah-Hartman , netdev@vger.kernel.org, linux-usb@vger.kernel.org, Saeed Mahameed , Jiri Pirko , Lukas Magel Subject: Re: [PATCH v4 2/6] can: etas_es58x: add devlink support Message-ID: References: <20221104073659.414147-1-mailhol.vincent@wanadoo.fr> <20221126162211.93322-1-mailhol.vincent@wanadoo.fr> <20221126162211.93322-3-mailhol.vincent@wanadoo.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221126162211.93322-3-mailhol.vincent@wanadoo.fr> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > @@ -2196,11 +2198,12 @@ static struct es58x_device *es58x_init_es58x_dev(struct usb_interface *intf, > ops = &es581_4_ops; > } > > - es58x_dev = devm_kzalloc(dev, es58x_sizeof_es58x_device(param), > - GFP_KERNEL); > - if (!es58x_dev) > + devlink = devlink_alloc(&es58x_dl_ops, es58x_sizeof_es58x_device(param), > + dev); > + if (!devlink) > return ERR_PTR(-ENOMEM); > > + es58x_dev = devlink_priv(devlink); That is 'interesting'. Makes me wonder about lifetimes of different objects. Previously your es58x_dev structure would disappear when the driver is released, or an explicit call to devm_kfree(). Now it disappears when devlink_free() is called. Any danger of use after free here? USB devices always make me wonder about life times rules since they are probably the mode dynamic sort of device the kernel has the handle, them just abruptly disappearing. > es58x_dev->param = param; > es58x_dev->ops = ops; > es58x_dev->dev = dev; > @@ -2247,6 +2250,8 @@ static int es58x_probe(struct usb_interface *intf, > if (ret) > return ret; > > + devlink_register(priv_to_devlink(es58x_dev)); > + > for (ch_idx = 0; ch_idx < es58x_dev->num_can_ch; ch_idx++) { > ret = es58x_init_netdev(es58x_dev, ch_idx); > if (ret) { > @@ -2272,8 +2277,10 @@ static void es58x_disconnect(struct usb_interface *intf) > dev_info(&intf->dev, "Disconnecting %s %s\n", > es58x_dev->udev->manufacturer, es58x_dev->udev->product); > > + devlink_unregister(priv_to_devlink(es58x_dev)); > es58x_free_netdevs(es58x_dev); > es58x_free_urbs(es58x_dev); > + devlink_free(priv_to_devlink(es58x_dev)); > usb_set_intfdata(intf, NULL); Should devlink_free() be after usb_set_inftdata()? Andrew