From patchwork Mon Jan 28 16:28:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yavuz, Tuba" X-Patchwork-Id: 1032020 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ece.ufl.edu Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43pFSG3BDhz9sQp for ; Tue, 29 Jan 2019 03:28:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390651AbfA1Q2p convert rfc822-to-8bit (ORCPT ); Mon, 28 Jan 2019 11:28:45 -0500 Received: from smtp-prod05.osg.ufl.edu ([128.227.74.125]:52468 "EHLO smtp.ufl.edu" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388867AbfA1Q2l (ORCPT ); Mon, 28 Jan 2019 11:28:41 -0500 X-UFL-GatorLink-Authenticated: authenticated as () with from 10.36.197.41 Received: from exmbxprd20.ad.ufl.edu ([10.36.197.41]) by smtp.ufl.edu (8.14.4/8.14.4/3.0.0) with ESMTP id x0SGSdDN034493 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 28 Jan 2019 11:28:39 -0500 Received: from exmbxprd18.ad.ufl.edu (10.36.197.39) by exmbxprd20.ad.ufl.edu (10.36.197.41) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Mon, 28 Jan 2019 11:28:38 -0500 Received: from exmbxprd18.ad.ufl.edu ([fe80::890c:cba5:27b2:db27]) by exmbxprd18.ad.ufl.edu ([fe80::890c:cba5:27b2:db27%19]) with mapi id 15.00.1395.000; Mon, 28 Jan 2019 11:28:38 -0500 From: "Yavuz, Tuba" To: "netdev@vger.kernel.org" Subject: [PATCH] : net : hso : do not call unregister_netdev if not registered Thread-Topic: [PATCH] : net : hso : do not call unregister_netdev if not registered Thread-Index: AQHUtyaF1PIYk7B+iEeOkw3AvuTpbA== Date: Mon, 28 Jan 2019 16:28:38 +0000 Message-ID: <1548692918696.27977@ece.ufl.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.36.198.13] MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-01-28_09:, , signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=876 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1901280124 X-Spam-Level: * X-UFL-Spam-Level: * Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On an error path inside the hso_create_net_device function of the hso driver, hso_free_net_device gets called. This causes potentially a negative reference count in the net device if register_netdev has not been called yet as hso_free_net_device calls unregister_netdev regardless. I think the driver should distinguish these cases and call unregister_netdev only if register_netdev has been called. Reported-by: Tuba Yavuz Signed-off-by: Tuba Yavuz --- drivers/net/usb/hso.c.orig 2019-01-27 14:45:58.232683119 -0500 +++ drivers/net/usb/hso.c 2019-01-27 14:47:43.592683629 -0500 @@ -2377,7 +2377,7 @@ static void hso_free_net_device(struct h remove_net_device(hso_net->parent); - if (hso_net->net) + if (hso_net->net && hso_net->net->reg_state == NETREG_REGISTERED) unregister_netdev(hso_net->net); /* start freeing */