From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [V6,1/3] USB: serial: f81232: clear overrun flag From: Johan Hovold Message-Id: <20190415102018.GD29656@localhost> Date: Mon, 15 Apr 2019 12:20:18 +0200 To: "Ji-Ze Hong \(Peter Hong\)" Cc: peter_hong@fintek.com.tw, johan@kernel.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "Ji-Ze Hong \(Peter Hong\)" , Oliver Neukum List-ID: T24gV2VkLCBBcHIgMDMsIDIwMTkgYXQgMDQ6NDA6MzBQTSArMDgwMCwgSmktWmUgSG9uZyAoUGV0 ZXIgSG9uZykgd3JvdGU6Cj4gVGhlIEY4MTIzMiB3aWxsIHJlcG9ydCBkYXRhIGFuZCBMU1Igd2l0 aCBidWxrIGxpa2UgZm9sbG93aW5nIGZvcm1hdDoKPiBidWxrLWluIGRhdGE6IFtMU1IoMUJ5dGUp K0RBVEEoMUJ5dGUpXVtMU1IoMUJ5dGUpK0RBVEEoMUJ5dGUpXS4uLgo+IAo+IExTUiB3aWxsIGF1 dG8gY2xlYXIgZnJhbWUvcGFyaXR5L2JyZWFrIGVycm9yIGZsYWcgd2hlbiByZWFkaW5nIGJ5IEgv VywKPiBidXQgb3ZlcnJydW4gd2lsbCBvbmx5IGNsZWFyZWQgd2hlbiByZWFkaW5nIExTUi4gU28g dGhpcyBwYXRjaCBhZGQgYQo+IHdvcmtlciB0byByZWFkIExTUiB3aGVuIG92ZXJydW4gYW5kIGZs dXNoIHRoZSB3b3JrZXIgb24gY2xvc2UoKSAmCj4gc3VzcGVuZCgpLgo+IAo+IENjOiBPbGl2ZXIg TmV1a3VtIDxvbmV1a3VtQHN1c2UuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEppLVplIEhvbmcgKFBl dGVyIEhvbmcpIDxocGV0ZXIrbGludXhfa2VybmVsQGdtYWlsLmNvbT4KPiAtLS0KPiBWNjoKPiAJ MTogQWRkIGRlZmVycmVkX2xzcl93b3JrX25lZWRlZCB0byByZS10cmlnZ2VyIHdoZW4gZjgxMjMy X3Jlc3VtZSgpCj4gCj4gdjU6Cj4gCTE6IFNvdXJjZSBjb2RlIGJhc2UgcmV2ZXJ0IHRvIHYzIGFu ZCByZW1vdmUgYWxsIHY0IGNoYW5nZXMuCj4gCTI6IEFkZCBzZXJpYWwtPnN1c3BlbmRpbmcgY2hl Y2sgaW4gZjgxMjMyX3Byb2Nlc3NfcmVhZF91cmIoKQo+IAkgICBiZWZvcmUgc2NoZWR1bGVfd29y aygmcHJpdi0+bHNyX3dvcmspIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9uLgo+IAo+IHY0Ogo+IAkx OiBBZGQgc2VyaWFsLT5zdXNwZW5kaW5nIGNoZWNrIGluIGY4MTIzMl9sc3Jfd29ya2VyKCkgdG8g YXZvaWQKPiAJICAgcmUtdHJpZ2dlcgo+IAkyOiBBZGQgcG9ydF9wcml2LWxzcl93b3JrX3Jlc2No ZWQgdG8gcmUtdHJpZ2dlciBMU1Igd29ya2VyCj4gCj4gdjM6Cj4gCTE6IEFkZCBmbHVzaF93b3Jr KCZwb3J0X3ByaXYtPmxzcl93b3JrKSBpbiBmODEyMzJfc3VzcGVuZCgpLgo+IAo+IHYyOgo+IAkx OiBBZGQgZmx1c2hfd29yaygmcG9ydF9wcml2LT5sc3Jfd29yaykgaW4gZjgxMjMyX2Nsb3NlKCku Cj4gCj4gIGRyaXZlcnMvdXNiL3NlcmlhbC9mODEyMzIuYyB8IDU1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgNTUgaW5zZXJ0 aW9ucygrKQoKPiArc3RhdGljIGludCBmODEyMzJfc3VzcGVuZChzdHJ1Y3QgdXNiX3NlcmlhbCAq c2VyaWFsLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSkKPiArewo+ICsJc3RydWN0IGY4MTIzMl9wcml2 YXRlICpwb3J0X3ByaXY7Cj4gKwo+ICsJcG9ydF9wcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9k YXRhKHNlcmlhbC0+cG9ydFswXSk7Cj4gKwlmbHVzaF93b3JrKCZwb3J0X3ByaXYtPmxzcl93b3Jr KTsKCk5vdGUgdGhhdCB1c2Itc2VyaWFsIGNvcmUgZG9lc24ndCBtYW5hZ2UgdGhlIGludGVycnVw dCB1cmIgZm9yIHlvdSwgc28KdGhlcmUncyBhbHJlYWR5IGEgYnVnIGluIHRoaXMgZHJpdmVyIHdo aWNoIHNob3VsZCBiZSBmaXhlZCBpbiBhCnByZXBhcmF0b3J5IHBhdGNoIChpLmUuIHJlc3VibWl0 IHRoZSBpbnRlcnJ1cHQgdXJiIG9uIHJlc3VtZSkuCgpBbmQgaWYgeW91IHN0b3AgdGhlIGJ1bGst aW4gYW5kIGludGVycnVwdCB1cmJzIGV4cGxpY2l0bHkgaGVyZSwgeW91IGNhbgpzYWZlbHkgZmx1 c2ggdGhlIGxzciB3b3JrIHdpdGhvdXQgYW55IHJhY2VzIGFmdGVyd2FyZHMuCgpBbHNvIG5vdGUg dGhhdCB0aGUgaW50ZXJydXB0IHdvcmsgaXMgY3VycmVudGx5IG5ldmVyIGZsdXNoZWQgb24gc3Vz cGVuZApvciBjbG9zZSBlaXRoZXIuLi4gQW5vdGhlciB0aGluZyB0byBmaXggZmlyc3QuCgpUaGVy ZSdzIGFsc28gYSBsYXllcmluZyB2aW9sYXRpb24gaGVyZSwgc2luY2UgeW91J3JlIGFjY2Vzc2lu ZyB0aGUgY2hpbGQKcG9ydCBkYXRhIGZyb20gYSBwYXJlbnQgaW50ZXJmYWNlIGRyaXZlciBjYWxs YmFjay4gVGhlIHBvcnQgZHJpdmVyIGNvdWxkCmhhdmUgYmVlbiB1bmJvdW5kIGFuZCB5b3UnZCBn ZXQgYSBOVUxMIGRlcmVmIGhlcmUuIEl0ZXJhdGluZyBvdmVyIHRoZQppbnRlcmZhY2UncyBwb3J0 cywgYW5kIGNoZWNraW5nIGlmIGl0J3MgYmVlbiBvcGVuZWQgKGFzIHlvdSBuZWVkIHRvIGRvCm9u IHJlc3VtZSBhbnl3YXkpIG1pZ2h0IGJlIGVub3VnaCB0aG91Z2guCgpKb2hhbgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,T_DKIMWL_WL_HIGH, USER_AGENT_MUTT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AEFD3C10F0E for ; Mon, 15 Apr 2019 10:20:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7EE442075B for ; Mon, 15 Apr 2019 10:20:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555323621; bh=xkkT995wyHiGNkJTyDY9RuTkCF7U40vt++nhBYST41U=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=ocDUnW0oMm4MpmQT0c+XaO7dom9azUVIX3zq09quOuTvzqHVtvv1WA2FCjXLMHJxX /fJPhUpoofoQzmtzMtUrAw2L6PGVzeP4lGbv1nAkHrKxJ2JOzh1zNpk9OiOJ6Qq6oB wIqql6UtQyBBKd8HUN02w7G4S9hYRULlO2nvTDj4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726810AbfDOKUQ (ORCPT ); Mon, 15 Apr 2019 06:20:16 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:40554 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726751AbfDOKUQ (ORCPT ); Mon, 15 Apr 2019 06:20:16 -0400 Received: by mail-lj1-f196.google.com with SMTP id q66so15087726ljq.7; Mon, 15 Apr 2019 03:20:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=bqYAp/he9RcQe+K1USjID00PfUaljcvAy/YDV5xrNu0=; b=Vtf3SlckqOS7vf76vmPSNdYxbvfTbiHI+3KhZdypAzY8FDSiIh9sJgQ+mBl199wZhk nlorY1Jyy+s2xa367/6cEOuAiUnmZT1DBtsJU94/KrSeuwgIDtq7Hx5LMhWoYq8hAdKz qPKOu1kyza8JR7Lu2AWMI73MenlcZygZXHEQiZ/izyDC7jURVUBkMrXj+zRNiOk3pl/m QeFwnUZBzFx4Eow5s+tb7e2JpyyRA1j0T0nrybeh7P0uSbV+Ssinzrt2vwtdwXWv9MNj Y8d3ZMUFZk37uiPpRm2p/vWShfnOLUqE8MIu50MRE9b0zGFYS33SOvKUOarxuPIJbSiQ 3qVA== X-Gm-Message-State: APjAAAUM5hO6pvl0+AErmWL+sdQ8qeYeh9RwmtEIU8Owtq1rUgzj14ha zYbfB32kXNOoJWR+dPxoW7w= X-Google-Smtp-Source: APXvYqw9oyN9eUrBKy8vJXhI95uC5hG4QSqFBRXN3zRYA994/kLCJpfOQgRBfoVFEynNd5XEJ4HN1w== X-Received: by 2002:a2e:895a:: with SMTP id b26mr38057860ljk.89.1555323613764; Mon, 15 Apr 2019 03:20:13 -0700 (PDT) Received: from xi.terra (c-74bee655.07-184-6d6c6d4.bbcust.telenor.se. [85.230.190.116]) by smtp.gmail.com with ESMTPSA id d23sm2805988lfj.64.2019.04.15.03.20.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 15 Apr 2019 03:20:12 -0700 (PDT) Received: from johan by xi.terra with local (Exim 4.91) (envelope-from ) id 1hFyio-0000Bc-6P; Mon, 15 Apr 2019 12:20:18 +0200 Date: Mon, 15 Apr 2019 12:20:18 +0200 From: Johan Hovold To: "Ji-Ze Hong (Peter Hong)" Cc: peter_hong@fintek.com.tw, johan@kernel.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "Ji-Ze Hong (Peter Hong)" , Oliver Neukum Subject: Re: [PATCH V6 1/3] USB: serial: f81232: clear overrun flag Message-ID: <20190415102018.GD29656@localhost> References: <1554280832-29286-1-git-send-email-hpeter+linux_kernel@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline In-Reply-To: <1554280832-29286-1-git-send-email-hpeter+linux_kernel@gmail.com> User-Agent: Mutt/1.11.4 (2019-03-13) Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190415102018.aQeF36IKss8C_48EpNe5W1HtSFH2wyOt1crECIb57EA@z> On Wed, Apr 03, 2019 at 04:40:30PM +0800, Ji-Ze Hong (Peter Hong) wrote: > The F81232 will report data and LSR with bulk like following format: > bulk-in data: [LSR(1Byte)+DATA(1Byte)][LSR(1Byte)+DATA(1Byte)]... > > LSR will auto clear frame/parity/break error flag when reading by H/W, > but overrrun will only cleared when reading LSR. So this patch add a > worker to read LSR when overrun and flush the worker on close() & > suspend(). > > Cc: Oliver Neukum > Signed-off-by: Ji-Ze Hong (Peter Hong) > --- > V6: > 1: Add deferred_lsr_work_needed to re-trigger when f81232_resume() > > v5: > 1: Source code base revert to v3 and remove all v4 changes. > 2: Add serial->suspending check in f81232_process_read_urb() > before schedule_work(&priv->lsr_work) to avoid race condition. > > v4: > 1: Add serial->suspending check in f81232_lsr_worker() to avoid > re-trigger > 2: Add port_priv-lsr_work_resched to re-trigger LSR worker > > v3: > 1: Add flush_work(&port_priv->lsr_work) in f81232_suspend(). > > v2: > 1: Add flush_work(&port_priv->lsr_work) in f81232_close(). > > drivers/usb/serial/f81232.c | 55 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 55 insertions(+) > +static int f81232_suspend(struct usb_serial *serial, pm_message_t message) > +{ > + struct f81232_private *port_priv; > + > + port_priv = usb_get_serial_port_data(serial->port[0]); > + flush_work(&port_priv->lsr_work); Note that usb-serial core doesn't manage the interrupt urb for you, so there's already a bug in this driver which should be fixed in a preparatory patch (i.e. resubmit the interrupt urb on resume). And if you stop the bulk-in and interrupt urbs explicitly here, you can safely flush the lsr work without any races afterwards. Also note that the interrupt work is currently never flushed on suspend or close either... Another thing to fix first. There's also a layering violation here, since you're accessing the child port data from a parent interface driver callback. The port driver could have been unbound and you'd get a NULL deref here. Iterating over the interface's ports, and checking if it's been opened (as you need to do on resume anyway) might be enough though. Johan