From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966429AbdEWTic (ORCPT ); Tue, 23 May 2017 15:38:32 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:56439 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965180AbdEWTia (ORCPT ); Tue, 23 May 2017 15:38:30 -0400 Date: Tue, 23 May 2017 21:38:08 +0200 (CEST) From: Stefan Wahren To: Rob Herring , Mark Rutland , "David S. Miller" , Lino Sanfilippo Cc: linux-serial@vger.kernel.org, Jiri Slaby , Greg Kroah-Hartman , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Jakub Kicinski , devicetree@vger.kernel.org Message-ID: <1059621060.236992.1495568289051@email.1und1.de> In-Reply-To: <053235ad-a963-6a09-ccb0-b643115dee00@gmx.de> References: <1495545173-22150-1-git-send-email-stefan.wahren@i2se.com> <1495545173-22150-18-git-send-email-stefan.wahren@i2se.com> <053235ad-a963-6a09-ccb0-b643115dee00@gmx.de> Subject: Re: [PATCH v6 net-next 17/17] net: qualcomm: add QCA7000 UART driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Priority: 3 Importance: Medium X-Mailer: Open-Xchange Mailer v7.8.1-Rev34 X-Originating-Client: open-xchange-appsuite X-Provags-ID: V03:K0:vy/A9t/DFHQk5dZq2V3jP8kpYIQCKdiIGjwJxCTjhW58KxHNvcT H+WH+g8lAiVYYHHxNKI57m4SoWSwCaP8ocZL2D++Mw9exOs7nBoospBFVuqB/0tfLjmEtUy 57OygwTg9lN5rBZbU4DqCW7W2Gxeu2WqfBVsf6kqzjSleY5mlwRvblgO/TPFqboohwEiSYp AuJPIuEFWEuPfTY8V5tLg== X-UI-Out-Filterresults: notjunk:1;V01:K0:woXPHldF3ec=:pAsijsl2QUkCwWsxrrhcx5 hNWD1T3Kaa8CxWm7g/RInHwlNksRYkvIFx9SnlRWdi79Z/huFVn+rdOiR/AR93Ifwm7CgMS6S TJZYmcRUFrYbJ30wDfu6JvT2MRKmkhgNVfjK4ga1Hb0tiiq/jxupU4Fdm3pxTS/p689PkPkFZ dQybGdGKF2BaOqgjnQQC0tSvAuNK3DdQhM4rPJhhfDNUmZcpsFWQqeDDe6xl2ulyTzYsn9I5/ Cn1GnUD5me5DhwShhb6mh9XBs7kprbEqzB2hDNA/jYhPkPuPA0B5rQZ3JJWGMOEfircVZgk+M I4+7cjEo7oNfzsl+FxdOQae7Y95hPb6RreDKHfGFqFqpxU74HDO/oxA7+YbeoDNTFYid0JP3X lDC0ga5R647+a5EdgWyHFO4ud9CrIJlbPHmn/PFXlj/bCjZ4Btpv7teKvna/c7VpPqICJi5hm W0aarRmiTfgmbXqYN0lc5sLvwqrBbRbUe0r6iwG+uT+ov5ZX1D3kufFdW7jNBMt4fw7aSrWZ3 3/Y9PdZ7RhSSIW9ywZRZydR4kyMFfvY+fVpZW5m2sg6xSdrzmdcMlqJjcWqu87dOjXtBM9LxH FkIRiQ1dQVLVM2aDnCUhLHAd4oyCo5KIPxKonYfcew65rDaATuomjzSv0YsiNMI5JaCP4jfMV m0KVo/qOonqpCTXVXMJ6onltCZ9zV0Z5he4/wmPyv2Op8NdU14/P4umLtctlPRTZh/RPVkuWr Z7Qw8HYWQ8S5rZQA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > Lino Sanfilippo hat am 23. Mai 2017 um 20:16 geschrieben: > > > 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). Even if the carrier is off? Since i see this pattern in some drivers, can you please point me to a reference like a thread or something else? > I suggest to avoid this possible race by first unregistering the netdevice and then > calling cancel_work_sync(). What makes you sure that's safe to unregister the netdev while the tx work queue is possibly active? > Regards, > Lino >