[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <053235ad-a963-6a09-ccb0-b643115dee00@gmx.de>
Date: Tue, 23 May 2017 20:16:44 +0200
From: Lino Sanfilippo <LinoSanfilippo@....de>
To: Stefan Wahren <stefan.wahren@...e.com>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>,
"David S. Miller" <davem@...emloft.net>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jslaby@...e.com>, Jakub Kicinski <kubakici@...pl>,
devicetree@...r.kernel.org, netdev@...r.kernel.org,
linux-serial@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v6 net-next 17/17] net: qualcomm: add QCA7000 UART driver
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
Powered by blists - more mailing lists