From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030676AbdEWSRj (ORCPT ); Tue, 23 May 2017 14:17:39 -0400 Received: from mout.gmx.net ([212.227.17.21]:50297 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030408AbdEWSRg (ORCPT ); Tue, 23 May 2017 14:17:36 -0400 Subject: Re: [PATCH v6 net-next 17/17] net: qualcomm: add QCA7000 UART driver To: Stefan Wahren , Rob Herring , Mark Rutland , "David S. Miller" Cc: Greg Kroah-Hartman , Jiri Slaby , Jakub Kicinski , devicetree@vger.kernel.org, netdev@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org References: <1495545173-22150-1-git-send-email-stefan.wahren@i2se.com> <1495545173-22150-18-git-send-email-stefan.wahren@i2se.com> From: Lino Sanfilippo Message-ID: <053235ad-a963-6a09-ccb0-b643115dee00@gmx.de> Date: Tue, 23 May 2017 20:16:44 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <1495545173-22150-18-git-send-email-stefan.wahren@i2se.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:ES/OQmSw02dJx1D6rqYYKxi6FLDM8mUr6Ve1d1l49MKnN7K4P+Y bHZrQXT6U8Z5sVnhKkTCb7lu9URKXeRiOo4BT2r32rlQxCvlxLvgZl9ALEeFG8QNDlny1J1 +GjCqTUKhlJLxNz7n29j7FQgKWB3STwi+3r5D7mu+2BTayCaBI+y9Wqh5aBHLi1yOvMf6zd bEh/Y73B6G0TKrHYzEzAw== X-UI-Out-Filterresults: notjunk:1;V01:K0:rdI6BTNT3nI=:Y/WscWIoHkaIYjYMvq33Dq aNeRuKtFsxpSymkEToAowoItH1CXMXEjY4JpNqaZ5WwZlHP5e/2ex8d7DEjIfheo0MuDYxbZj vjl3GiW2H60LZaYa3RNfAf06Z96Hf9R+VppVhP3jCYAcv6WIOFhUMsTBUNxEqWj3Kdka8pq8X Q7hW8fjCJ+H5NBHpth+dCMLYhjDfMHkH67pkAMe6xJPWb3PLjFw3ICgtuC1U3F7ItjfpmVWpV 35l0R7fw5pkv8mwKpx+Fmo+pBKXLSkwS8yETm0Jug6o5DWC+pU/aq7Rzf3YHxtAMkBPOWebYy ccqWjwqY7zsPHpGupV1LrSK8fOTGCMEvPuD24LI1PoW10v54LEuEjYP1QL3uMOz7igpVfR5Nu qQo/H5azrs748WUneJmI5F9Fen0xSYlG6FiHqSlV0nUH48kCp+r1V/SDwrtNsc8QOhI5UZXE0 +90+n46tyCrRKIVtReGOvFtqGdeBW/ylopcwBXyPao8gIX8kAsxDkW2dUC6sfl3F2geJrFSia pRAbAqewDCbI+ynDmnHjZB+kuJypkBP4r5RFIOx7dMXziMjLkRzZpNf2vGX+xZSISOATQSCqR 2L5pbRgf3/+rQGZjSSkrvxNpqaFTjBADBeCWAXxwdrPjs7wH4dRNsJtc4dVppcpS1Rj2Etzdx eqRRQ+qVcJsksgEOSh/BtgVz6blfPo9Z1omasH7IhR50pkYt13zKtOHclB599PGiDnsobvywr HCSHK/BOYPo00bspKUBqZYoYtrk5AfksksR/PLHcMJLz58RdX6ky/8CL9ajSv4b0LfYkAZBUt 6l9efxU Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 23.05.2017 15:12, Stefan Wahren wrote: > +} > + > +static void qca_uart_remove(struct serdev_device *serdev) > +{ > + struct qcauart *qca = serdev_device_get_drvdata(serdev); > + > + netif_carrier_off(qca->net_dev); > + cancel_work_sync(&qca->tx_work); > + unregister_netdev(qca->net_dev); Note that it is still possible that the tx work is queued right after cancel_work_sync() returned and before the net device is unregistered (and thus the check for the net device being up at the beginning of the tx work function is passed and the function is executed). I suggest to avoid this possible race by first unregistering the netdevice and then calling cancel_work_sync(). Regards, Lino