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: [v1,1/1] usb: cdc_acm: prevent race at write to acm while system resumes From: Greg Kroah-Hartman Message-Id: <20180215173720.GA12311@kroah.com> Date: Thu, 15 Feb 2018 18:37:20 +0100 To: sathyanarayan.kuppuswamy@linux.intel.com Cc: oneukum@suse.com, felipe.balbi@intel.com, heikki.krogerus@intel.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Dominik Bozek , Sathyanarayanan Kuppuswamy List-ID: T24gTW9uLCBGZWIgMTIsIDIwMTggYXQgMTI6MTU6MDNQTSAtMDgwMCwgc2F0aHlhbmFyYXlhbi5r dXBwdXN3YW15QGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBEb21pbmlrIEJvemVrIDxk b21pbmlreC5ib3pla0BpbnRlbC5jb20+Cj4gCj4gQUNNIGRyaXZlciBtYXkgYWNjZXB0IGRhdGEg dG8gdHJhbnNtaXQgd2hpbGUgc3lzdGVtIGlzIG5vdCBmdWxseQo+IHJlc3VtZWQuIEluIHRoaXMg Y2FzZSBBQ00gZHJpdmVyIGJ1ZmZlcnMgZGF0YSBhbmQgcHJlcGFyZSBVUkJzCj4gb24gdXNiIGFu Y2hvciBsaXN0Lgo+IFRoZXJlIGlzIGEgbGl0dGxlIGNoYW5jZSB0aGF0IHR3byB0YXNrcyBwdXQg YSBjaGFyIGFuZCBpbml0aWF0ZQo+IGFjbV90dHlfZmx1c2hfY2hhcnMoKS4gSW4gc3VjaCBhIGNh c2UsIGRyaXZlciB3aWxsIHB1dCBvbmUgVVJCCj4gdHdpY2Ugb24gdXNiIGFuY2hvciBsaXN0Lgo+ IFRoaXMgcGF0Y2ggYWxzbyByZXNldCBsZW5ndGggb2YgZGF0YSBiZWZvcmUgcmVzdWUgb2YgYSBi dWZmZXIuCj4gVGhpcyBub3Qgb25seSBwcmV2ZW50IHNlbmRpbmcgcnViYmlzaCwgYnV0IGFsc28g bG93ZXIgcmlzYyBvZiByYWNlLgo+IAo+IFdpdGhvdXQgdGhpcyBwYXRjaCB3ZSBoaXQgZm9sbG93 aW5nIGtlcm5lbCBwYW5pYyBpbiBvbmUgb2Ygb3VyCj4gc3RhYmlsdHkvc3RyZXNzIHRlc3RzLgo+ IAo+IFsgICA0Ni44ODQ0NDJdICpsaXN0X2FkZCBkb3VibGUgYWRkKjogbmV3PWZmZmY5YjJhYjcy ODkzMzAsIHByZXY9ZmZmZjliMmFiNzI4OTMzMCwgbmV4dD1mZmZmOWIyYWI4MWUyOGUwLgo+IFsg ICA0Ni44ODQ0NzZdIE1vZHVsZXMgbGlua2VkIGluOiBoY2lfdWFydCBidGJjbSBibHVldG9vdGgg cmZraWxsX2dwaW8gaWdiX2F2YihPKSBjZmc4MDIxMSBzbmRfc29jX3NzdF9ieHRfdGRmODUzMiBz bmRfc29jX3NrbCBzbmRfc29jX3NrbF9pcGMgc25kX3NvY19zc3RfaXBjIHNuZF9zb2Nfc3N0X2Rz cCBzbmRfc29jX3NzdF9hY3BpIHNuZF9zb2Nfc3N0X21hdGNoIHNuZF9oZGFfZXh0X2NvcmUgc25k X2hkYV9jb3JlIHRydXN0eV90aW1lciB0cnVzdHlfd2FsbCB0cnVzdHlfbG9nIHRydXN0eV92aXJ0 aW8gdHJ1c3R5X2lwYyB0cnVzdHlfbWVtIHRydXN0eV9pcnEgdHJ1c3R5IHZpcnRpb19yaW5nIHZp cnRpbyBpbnRlbF9pcHU0X21tdV9ieHRCMCBsaWIyNjAwX21vZF9ieHRCMCBpbnRlbF9pcHU0X2lz eXNfbW9kX2J4dEIwIGxpYjI2MDBwc3lzX21vZF9ieHRCMCBpbnRlbF9pcHU0X3BzeXNfbW9kX2J4 dEIwIGludGVsX2lwdTRfbW9kX2J4dEIwIGludGVsX2lwdTRfd3JhcHBlcl9ieHRCMCBpbnRlbF9p cHU0X2FjcGkgdmlkZW9idWYyX2RtYV9jb250aWcgYXMzNjM4IGR3OTcxNCBsbTM2NDMgY3JsbW9k dWxlIHNtaWFwcCBzbWlhcHBfcGxsCj4gWyAgIDQ2Ljg4NDQ4MF0gQ1BVOiAxIFBJRDogMzMgQ29t bToga3dvcmtlci91ODoxIFRhaW50ZWQ6IEcgICAgIFUgIFcgIE8gICAgNC45LjU2LXF1aWx0LTJl NWRjMGFjLWc2MThlZDY5Y2VkNmUtZGlydHkgIzQKPiBbICAgNDYuODg0NDg5XSBXb3JrcXVldWU6 IGV2ZW50c191bmJvdW5kIGZsdXNoX3RvX2xkaXNjCj4gWyAgIDQ2Ljg4NDQ5NF0gIGZmZmZiOThh YzAxMmJiMDggZmZmZmZmZmZhZDNlODJlNSBmZmZmYjk4YWMwMTJiYjU4IDAwMDAwMDAwMDAwMDAw MDAKPiBbICAgNDYuODg0NDk3XSAgZmZmZmI5OGFjMDEyYmI0OCBmZmZmZmZmZmFkMGEyM2QxIDAw MDAwMDI0YWQ2Mzc0ZGQgZmZmZjliMmFiNzI4OTMzMAo+IFsgICA0Ni44ODQ1MDBdICBmZmZmOWIy YWI4MWUyOGUwIGZmZmY5YjJhYjcyODkzMzAgMDAwMDAwMDAwMDAwMDAwMiAwMDAwMDAwMDAwMDAw MDAwCj4gWyAgIDQ2Ljg4NDUwMV0gQ2FsbCBUcmFjZToKPiBbICAgNDYuODg0NTA3XSAgWzxmZmZm ZmZmZmFkM2U4MmU1Pl0gZHVtcF9zdGFjaysweDY3LzB4OTIKPiBbICAgNDYuODg0NTExXSAgWzxm ZmZmZmZmZmFkMGEyM2QxPl0gX193YXJuKzB4ZDEvMHhmMAo+IFsgICA0Ni44ODQ1MTNdICBbPGZm ZmZmZmZmYWQwYTI0NGY+XSB3YXJuX3Nsb3dwYXRoX2ZtdCsweDVmLzB4ODAKPiBbICAgNDYuODg0 NTE2XSAgWzxmZmZmZmZmZmFkNDA3NDQzPl0gX19saXN0X2FkZCsweGIzLzB4YzAKPiBbICAgNDYu ODg0NTIxXSAgWzxmZmZmZmZmZmFkNzExMzNjPl0gKnVzYl9hbmNob3JfdXJiKisweDRjLzB4YTAK PiBbICAgNDYuODg0NTI0XSAgWzxmZmZmZmZmZmFkNzgyYzZmPl0gKmFjbV90dHlfZmx1c2hfY2hh cnMqKzB4OGYvMHhiMAo+IFsgICA0Ni44ODQ1MjddICBbPGZmZmZmZmZmYWQ3ODJjZDE+XSAqYWNt X3R0eV9wdXRfY2hhciorMHg0MS8weDEwMAo+IFsgICA0Ni44ODQ1MzBdICBbPGZmZmZmZmZmYWQ0 Y2VkMzQ+XSB0dHlfcHV0X2NoYXIrMHgyNC8weDQwCj4gWyAgIDQ2Ljg4NDUzM10gIFs8ZmZmZmZm ZmZhZDRkM2JmNT5dIGRvX291dHB1dF9jaGFyKzB4YTUvMHgyMDAKPiBbICAgNDYuODg0NTM1XSAg WzxmZmZmZmZmZmFkNGQzZTk4Pl0gX19wcm9jZXNzX2VjaG9lcysweDE0OC8weDI5MAo+IFsgICA0 Ni44ODQ1MzhdICBbPGZmZmZmZmZmYWQ0ZDY1NGM+XSBuX3R0eV9yZWNlaXZlX2J1Zl9jb21tb24r MHg1N2MvMHhiMDAKPiBbICAgNDYuODg0NTQxXSAgWzxmZmZmZmZmZmFkNGQ2YWU0Pl0gbl90dHlf cmVjZWl2ZV9idWYyKzB4MTQvMHgyMAo+IFsgICA0Ni44ODQ1NDNdICBbPGZmZmZmZmZmYWQ0ZDk2 NjI+XSB0dHlfbGRpc2NfcmVjZWl2ZV9idWYrMHgyMi8weDUwCj4gWyAgIDQ2Ljg4NDU0NV0gIFs8 ZmZmZmZmZmZhZDRkOWMwNT5dIGZsdXNoX3RvX2xkaXNjKzB4YzUvMHhlMAo+IFsgICA0Ni44ODQ1 NDldICBbPGZmZmZmZmZmYWQwYmNmZTg+XSBwcm9jZXNzX29uZV93b3JrKzB4MTQ4LzB4NDQwCj4g WyAgIDQ2Ljg4NDU1MV0gIFs8ZmZmZmZmZmZhZDBiZGMxOT5dIHdvcmtlcl90aHJlYWQrMHg2OS8w eDRhMAo+IFsgICA0Ni44ODQ1NTRdICBbPGZmZmZmZmZmYWQwYmRiYjA+XSA/IG1heF9hY3RpdmVf c3RvcmUrMHg4MC8weDgwCj4gWyAgIDQ2Ljg4NDU1Nl0gIFs8ZmZmZmZmZmZhZDBjMmUxMD5dIGt0 aHJlYWQrMHgxMTAvMHgxMzAKPiBbICAgNDYuODg0NTU5XSAgWzxmZmZmZmZmZmFkMGMyZDAwPl0g PyBrdGhyZWFkX3BhcmsrMHg2MC8weDYwCj4gWyAgIDQ2Ljg4NDU2M10gIFs8ZmZmZmZmZmZhZGFk OTkxNz5dIHJldF9mcm9tX2ZvcmsrMHgyNy8weDQwCj4gWyAgIDQ2Ljg4NDU2Nl0gLS0tWyBlbmQg dHJhY2UgM2JkNTk5MDU4YjhhOWViMyBdLS0tCj4gCj4gU2lnbmVkLW9mZi1ieTogU2F0aHlhbmFy YXlhbmFuIEt1cHB1c3dhbXkgPHNhdGh5YW5hcmF5YW5hbi5rdXBwdXN3YW15QGludGVsLmNvbT4K CldoeSBoYXNuJ3QgdGhlIGF1dGhvciBvZiB0aGlzIHBhdGNoIHNpZ25lZCBvZmYgb24gaXQ/Cgp0 aGFua3MsCgpncmVnIGstaAotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQg dGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdl IHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0 cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Thu, 15 Feb 2018 18:37:20 +0100 From: Greg KH To: sathyanarayan.kuppuswamy@linux.intel.com Cc: oneukum@suse.com, felipe.balbi@intel.com, heikki.krogerus@intel.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Dominik Bozek , Sathyanarayanan Kuppuswamy Subject: Re: [PATCH v1 1/1] usb: cdc_acm: prevent race at write to acm while system resumes Message-ID: <20180215173720.GA12311@kroah.com> References: <1518466503-36918-1-git-send-email-sathyanarayan.kuppuswamy@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1518466503-36918-1-git-send-email-sathyanarayan.kuppuswamy@linux.intel.com> User-Agent: Mutt/1.9.3 (2018-01-21) X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Mon, Feb 12, 2018 at 12:15:03PM -0800, sathyanarayan.kuppuswamy@linux.intel.com wrote: > From: Dominik Bozek > > ACM driver may accept data to transmit while system is not fully > resumed. In this case ACM driver buffers data and prepare URBs > on usb anchor list. > There is a little chance that two tasks put a char and initiate > acm_tty_flush_chars(). In such a case, driver will put one URB > twice on usb anchor list. > This patch also reset length of data before resue of a buffer. > This not only prevent sending rubbish, but also lower risc of race. > > Without this patch we hit following kernel panic in one of our > stabilty/stress tests. > > [ 46.884442] *list_add double add*: new=ffff9b2ab7289330, prev=ffff9b2ab7289330, next=ffff9b2ab81e28e0. > [ 46.884476] Modules linked in: hci_uart btbcm bluetooth rfkill_gpio igb_avb(O) cfg80211 snd_soc_sst_bxt_tdf8532 snd_soc_skl snd_soc_skl_ipc snd_soc_sst_ipc snd_soc_sst_dsp snd_soc_sst_acpi snd_soc_sst_match snd_hda_ext_core snd_hda_core trusty_timer trusty_wall trusty_log trusty_virtio trusty_ipc trusty_mem trusty_irq trusty virtio_ring virtio intel_ipu4_mmu_bxtB0 lib2600_mod_bxtB0 intel_ipu4_isys_mod_bxtB0 lib2600psys_mod_bxtB0 intel_ipu4_psys_mod_bxtB0 intel_ipu4_mod_bxtB0 intel_ipu4_wrapper_bxtB0 intel_ipu4_acpi videobuf2_dma_contig as3638 dw9714 lm3643 crlmodule smiapp smiapp_pll > [ 46.884480] CPU: 1 PID: 33 Comm: kworker/u8:1 Tainted: G U W O 4.9.56-quilt-2e5dc0ac-g618ed69ced6e-dirty #4 > [ 46.884489] Workqueue: events_unbound flush_to_ldisc > [ 46.884494] ffffb98ac012bb08 ffffffffad3e82e5 ffffb98ac012bb58 0000000000000000 > [ 46.884497] ffffb98ac012bb48 ffffffffad0a23d1 00000024ad6374dd ffff9b2ab7289330 > [ 46.884500] ffff9b2ab81e28e0 ffff9b2ab7289330 0000000000000002 0000000000000000 > [ 46.884501] Call Trace: > [ 46.884507] [] dump_stack+0x67/0x92 > [ 46.884511] [] __warn+0xd1/0xf0 > [ 46.884513] [] warn_slowpath_fmt+0x5f/0x80 > [ 46.884516] [] __list_add+0xb3/0xc0 > [ 46.884521] [] *usb_anchor_urb*+0x4c/0xa0 > [ 46.884524] [] *acm_tty_flush_chars*+0x8f/0xb0 > [ 46.884527] [] *acm_tty_put_char*+0x41/0x100 > [ 46.884530] [] tty_put_char+0x24/0x40 > [ 46.884533] [] do_output_char+0xa5/0x200 > [ 46.884535] [] __process_echoes+0x148/0x290 > [ 46.884538] [] n_tty_receive_buf_common+0x57c/0xb00 > [ 46.884541] [] n_tty_receive_buf2+0x14/0x20 > [ 46.884543] [] tty_ldisc_receive_buf+0x22/0x50 > [ 46.884545] [] flush_to_ldisc+0xc5/0xe0 > [ 46.884549] [] process_one_work+0x148/0x440 > [ 46.884551] [] worker_thread+0x69/0x4a0 > [ 46.884554] [] ? max_active_store+0x80/0x80 > [ 46.884556] [] kthread+0x110/0x130 > [ 46.884559] [] ? kthread_park+0x60/0x60 > [ 46.884563] [] ret_from_fork+0x27/0x40 > [ 46.884566] ---[ end trace 3bd599058b8a9eb3 ]--- > > Signed-off-by: Sathyanarayanan Kuppuswamy Why hasn't the author of this patch signed off on it? thanks, greg k-h