From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from Galois.linutronix.de ([146.0.238.70]:35878 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752452AbeGAPjg (ORCPT ); Sun, 1 Jul 2018 11:39:36 -0400 From: Sebastian Andrzej Siewior To: linux-media@vger.kernel.org Cc: tglx@linutronix.de, Mauro Carvalho Chehab , linux-usb@vger.kernel.org, Sebastian Andrzej Siewior , Hans Verkuil Subject: [PATCH REPOST 5/5] media: usbtv: use irqsave() in USB's complete callback Date: Sun, 1 Jul 2018 17:39:21 +0200 Message-Id: <20180701153921.13129-6-bigeasy@linutronix.de> In-Reply-To: <20180701153921.13129-1-bigeasy@linutronix.de> References: <20180701153921.13129-1-bigeasy@linutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: linux-media-owner@vger.kernel.org List-ID: The USB completion callback does not disable interrupts while acquiring the lock. We want to remove the local_irq_disable() invocation from __usb_hcd_giveback_urb() and therefore it is required for the callback handler to disable the interrupts while acquiring the lock. The callback may be invoked either in IRQ or BH context depending on the USB host controller. Use the _irqsave() variant of the locking primitives. Cc: Mauro Carvalho Chehab Cc: Hans Verkuil Signed-off-by: Sebastian Andrzej Siewior --- drivers/media/usb/usbtv/usbtv-audio.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/media/usb/usbtv/usbtv-audio.c b/drivers/media/usb/usbt= v/usbtv-audio.c index 2c2ca77fa01f..4ce38246ed64 100644 --- a/drivers/media/usb/usbtv/usbtv-audio.c +++ b/drivers/media/usb/usbtv/usbtv-audio.c @@ -126,6 +126,7 @@ static void usbtv_audio_urb_received(struct urb *urb) struct snd_pcm_runtime *runtime =3D substream->runtime; size_t i, frame_bytes, chunk_length, buffer_pos, period_pos; int period_elapsed; + unsigned long flags; void *urb_current; =20 switch (urb->status) { @@ -179,12 +180,12 @@ static void usbtv_audio_urb_received(struct urb *urb) } } =20 - snd_pcm_stream_lock(substream); + snd_pcm_stream_lock_irqsave(substream, flags); =20 chip->snd_buffer_pos =3D buffer_pos; chip->snd_period_pos =3D period_pos; =20 - snd_pcm_stream_unlock(substream); + snd_pcm_stream_unlock_irqrestore(substream, flags); =20 if (period_elapsed) snd_pcm_period_elapsed(substream); --=20 2.18.0 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: [REPOST,5/5] media: usbtv: use irqsave() in USB's complete callback From: Sebastian Andrzej Siewior Message-Id: <20180701153921.13129-6-bigeasy@linutronix.de> Date: Sun, 1 Jul 2018 17:39:21 +0200 To: linux-media@vger.kernel.org Cc: tglx@linutronix.de, Mauro Carvalho Chehab , linux-usb@vger.kernel.org, Sebastian Andrzej Siewior , Hans Verkuil List-ID: VGhlIFVTQiBjb21wbGV0aW9uIGNhbGxiYWNrIGRvZXMgbm90IGRpc2FibGUgaW50ZXJydXB0cyB3 aGlsZSBhY3F1aXJpbmcKdGhlIGxvY2suIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZSBsb2NhbF9pcnFf ZGlzYWJsZSgpIGludm9jYXRpb24gZnJvbQpfX3VzYl9oY2RfZ2l2ZWJhY2tfdXJiKCkgYW5kIHRo ZXJlZm9yZSBpdCBpcyByZXF1aXJlZCBmb3IgdGhlIGNhbGxiYWNrCmhhbmRsZXIgdG8gZGlzYWJs ZSB0aGUgaW50ZXJydXB0cyB3aGlsZSBhY3F1aXJpbmcgdGhlIGxvY2suClRoZSBjYWxsYmFjayBt YXkgYmUgaW52b2tlZCBlaXRoZXIgaW4gSVJRIG9yIEJIIGNvbnRleHQgZGVwZW5kaW5nIG9uIHRo ZQpVU0IgaG9zdCBjb250cm9sbGVyLgpVc2UgdGhlIF9pcnFzYXZlKCkgdmFyaWFudCBvZiB0aGUg bG9ja2luZyBwcmltaXRpdmVzLgoKQ2M6IE1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBr ZXJuZWwub3JnPgpDYzogSGFucyBWZXJrdWlsIDxoYW5zLnZlcmt1aWxAY2lzY28uY29tPgpTaWdu ZWQtb2ZmLWJ5OiBTZWJhc3RpYW4gQW5kcnplaiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXgu ZGU+Ci0tLQogZHJpdmVycy9tZWRpYS91c2IvdXNidHYvdXNidHYtYXVkaW8uYyB8IDUgKysrLS0K IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdXNidHYvdXNidHYtYXVkaW8uYyBiL2RyaXZlcnMvbWVk aWEvdXNiL3VzYnR2L3VzYnR2LWF1ZGlvLmMKaW5kZXggMmMyY2E3N2ZhMDFmLi40Y2UzODI0NmVk NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3VzYnR2L3VzYnR2LWF1ZGlvLmMKKysr IGIvZHJpdmVycy9tZWRpYS91c2IvdXNidHYvdXNidHYtYXVkaW8uYwpAQCAtMTI2LDYgKzEyNiw3 IEBAIHN0YXRpYyB2b2lkIHVzYnR2X2F1ZGlvX3VyYl9yZWNlaXZlZChzdHJ1Y3QgdXJiICp1cmIp CiAJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsK IAlzaXplX3QgaSwgZnJhbWVfYnl0ZXMsIGNodW5rX2xlbmd0aCwgYnVmZmVyX3BvcywgcGVyaW9k X3BvczsKIAlpbnQgcGVyaW9kX2VsYXBzZWQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl2b2lk ICp1cmJfY3VycmVudDsKIAogCXN3aXRjaCAodXJiLT5zdGF0dXMpIHsKQEAgLTE3OSwxMiArMTgw LDEyIEBAIHN0YXRpYyB2b2lkIHVzYnR2X2F1ZGlvX3VyYl9yZWNlaXZlZChzdHJ1Y3QgdXJiICp1 cmIpCiAJCX0KIAl9CiAKLQlzbmRfcGNtX3N0cmVhbV9sb2NrKHN1YnN0cmVhbSk7CisJc25kX3Bj bV9zdHJlYW1fbG9ja19pcnFzYXZlKHN1YnN0cmVhbSwgZmxhZ3MpOwogCiAJY2hpcC0+c25kX2J1 ZmZlcl9wb3MgPSBidWZmZXJfcG9zOwogCWNoaXAtPnNuZF9wZXJpb2RfcG9zID0gcGVyaW9kX3Bv czsKIAotCXNuZF9wY21fc3RyZWFtX3VubG9jayhzdWJzdHJlYW0pOworCXNuZF9wY21fc3RyZWFt X3VubG9ja19pcnFyZXN0b3JlKHN1YnN0cmVhbSwgZmxhZ3MpOwogCiAJaWYgKHBlcmlvZF9lbGFw c2VkKQogCQlzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKHN1YnN0cmVhbSk7Cg==