* [PATCH 0/2] Remove usage of mlocks from ade7758 file
@ 2018-02-05 19:35 Shreeya Patel
2018-02-05 19:38 ` [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock Shreeya Patel
2018-02-05 19:40 ` [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection Shreeya Patel
0 siblings, 2 replies; 5+ messages in thread
From: Shreeya Patel @ 2018-02-05 19:35 UTC (permalink / raw)
To: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh,
linux-iio, devel, linux-kernel
Cc: Shreeya Patel
This patchset has been introduced for the removal of mlocks
from the ade7758 file and replace it with the already established
buf_lock.
Patch *[1/2] removes the unnecessary mlocks i.e. which are
taken around the read cases.
Patch *[2/2] replaces other mlocks with buf_locks and introduces
unlocked forms of read and write registers so as to avoid nested
locks. Also some additional cleanups like moving the locks to where
they are required to protect, are made to improve the code clarity.
This patchset has been introduced after the revisions done on the
patch *[2/2] and also there was the need of patch *[1/2].
Shreeya Patel (2):
Staging: iio: ade7758: Remove iio_dev mlock
Staging: iio: ade7758: Expand buf_lock to cover both buffer and state
protection
drivers/staging/iio/meter/ade7758.h | 2 +-
drivers/staging/iio/meter/ade7758_core.c | 54 ++++++++++++++++++++++----------
2 files changed, 39 insertions(+), 17 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock 2018-02-05 19:35 [PATCH 0/2] Remove usage of mlocks from ade7758 file Shreeya Patel @ 2018-02-05 19:38 ` Shreeya Patel 2018-02-06 7:23 ` Ardelean, Alexandru 2018-02-05 19:40 ` [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection Shreeya Patel 1 sibling, 1 reply; 5+ messages in thread From: Shreeya Patel @ 2018-02-05 19:38 UTC (permalink / raw) To: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh, linux-iio, devel, linux-kernel Cc: Shreeya Patel In the ade7758 file, read raw does not require iio_dev->mlock for reads. It can run concurrently as resource protection is handled by buf_lock in read register. Signed-off-by: Shreeya Patel <shreeya.patel23498@gmail.com> --- drivers/staging/iio/meter/ade7758_core.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index 7b7ffe5..227dbfc 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c @@ -526,9 +526,7 @@ static int ade7758_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: - mutex_lock(&indio_dev->mlock); ret = ade7758_read_samp_freq(&indio_dev->dev, val); - mutex_unlock(&indio_dev->mlock); return ret; default: return -EINVAL; -- 2.7.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock 2018-02-05 19:38 ` [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock Shreeya Patel @ 2018-02-06 7:23 ` Ardelean, Alexandru 0 siblings, 0 replies; 5+ messages in thread From: Ardelean, Alexandru @ 2018-02-06 7:23 UTC (permalink / raw) To: lars@metafoo.de, knaack.h@gmx.de, jic23@kernel.org, Hennerich, Michael, linux-iio@vger.kernel.org, devel@driverdev.osuosl.org, pmeerw@pmeerw.net, shreeya.patel23498@gmail.com T24gVHVlLCAyMDE4LTAyLTA2IGF0IDAxOjA4ICswNTMwLCBTaHJlZXlhIFBhdGVsIHdyb3RlOg0K PiBJbiB0aGUgYWRlNzc1OCBmaWxlLCByZWFkIHJhdyBkb2VzIG5vdCByZXF1aXJlIGlpb19kZXYt Pm1sb2NrIGZvcg0KPiByZWFkcy4gSXQgY2FuIHJ1biBjb25jdXJyZW50bHkgYXMgcmVzb3VyY2Ug cHJvdGVjdGlvbiBpcyBoYW5kbGVkDQo+IGJ5IGJ1Zl9sb2NrIGluIHJlYWQgcmVnaXN0ZXIuDQoN ClJlbW92ZWQgbGludXgta2VybmVsIGxpc3QgYW5kIEdyZWcgZnJvbSByZXBseSBsaXN0Lg0KDQo+ IA0KPiBTaWduZWQtb2ZmLWJ5OiBTaHJlZXlhIFBhdGVsIDxzaHJlZXlhLnBhdGVsMjM0OThAZ21h aWwuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1OF9jb3Jl LmMgfCAyIC0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NThfY29yZS5jIGIvZHJpdmVy cy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4X2NvcmUuYw0KPiBpbmRleCA3YjdmZmU1Li4yMjdk YmZjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NThfY29y ZS5jDQo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1OF9jb3JlLmMNCj4g QEAgLTUyNiw5ICs1MjYsNyBAQCBzdGF0aWMgaW50IGFkZTc3NThfcmVhZF9yYXcoc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiwNCj4gIA0KPiAgCXN3aXRjaCAobWFzaykgew0KPiAgCWNhc2UgSUlP X0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+IC0JCW11dGV4X2xvY2soJmluZGlvX2Rldi0+bWxvY2sp Ow0KPiAgCQlyZXQgPSBhZGU3NzU4X3JlYWRfc2FtcF9mcmVxKCZpbmRpb19kZXYtPmRldiwgdmFs KTsNCj4gLQkJbXV0ZXhfdW5sb2NrKCZpbmRpb19kZXYtPm1sb2NrKTsNCg0KdGhpcyBwYXRjaCBj YW4gYmUgc3F1YXNoZWQgaW50byB0aGUgc2Vjb25kIG9uZQ0Kc2VtYW50aWNhbGx5IHRoZXkgYXJl IHRoZSBzYW1lDQoNCj4gIAkJcmV0dXJuIHJldDsNCj4gIAlkZWZhdWx0Og0KPiAgCQlyZXR1cm4g LUVJTlZBTDs= ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection 2018-02-05 19:35 [PATCH 0/2] Remove usage of mlocks from ade7758 file Shreeya Patel 2018-02-05 19:38 ` [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock Shreeya Patel @ 2018-02-05 19:40 ` Shreeya Patel 2018-02-06 7:32 ` Ardelean, Alexandru 1 sibling, 1 reply; 5+ messages in thread From: Shreeya Patel @ 2018-02-05 19:40 UTC (permalink / raw) To: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh, linux-iio, devel, linux-kernel Cc: Shreeya Patel iio_dev->mlock is to be used only by the IIO core for protecting device mode changes between INDIO_DIRECT and INDIO_BUFFER. This patch replaces the use of mlock with the already established buf_lock mutex. Introducing 'unlocked' forms of read and write registers. The read/write frequency functions now require buf_lock to be held. That's not obvious so avoid this but moving the locking inside the functions where it is then clear that they are taking the unlocked forms of the register read/write. It isn't readily apparent that write frequency function requires the locks to be taken, so move it inside the function to where it is required to protect. Signed-off-by: Shreeya Patel <shreeya.patel23498@gmail.com> --- Changes in v2 -Add static keyword to newly introduced functions and remove some added comments which are not required. Changes in v3 -Remove some useless mlocks and send it as another patch. Also make the necessary change in the current patch associated with the new patch with commit id 88eba33. Make commit message more appropriate. Changes in v4 -Write frequency function do not require lock so move it inside the function to where it is required to protect. Changes in v5 -Remove goto statement and make the code to return -EINVAL there itself. drivers/staging/iio/meter/ade7758.h | 2 +- drivers/staging/iio/meter/ade7758_core.c | 52 +++++++++++++++++++++++--------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/drivers/staging/iio/meter/ade7758.h b/drivers/staging/iio/meter/ade7758.h index 6ae78d8..2de81b5 100644 --- a/drivers/staging/iio/meter/ade7758.h +++ b/drivers/staging/iio/meter/ade7758.h @@ -111,7 +111,7 @@ * @trig: data ready trigger registered with iio * @tx: transmit buffer * @rx: receive buffer - * @buf_lock: mutex to protect tx and rx + * @buf_lock: mutex to protect tx, rx, read and write frequency **/ struct ade7758_state { struct spi_device *us; diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index 227dbfc..dfe8e97 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c @@ -24,17 +24,25 @@ #include "meter.h" #include "ade7758.h" -int ade7758_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val) +static int __ade7758_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val) { - int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7758_state *st = iio_priv(indio_dev); - mutex_lock(&st->buf_lock); st->tx[0] = ADE7758_WRITE_REG(reg_address); st->tx[1] = val; - ret = spi_write(st->us, st->tx, 2); + return spi_write(st->us, st->tx, 2); +} + +int ade7758_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val) +{ + int ret; + struct iio_dev *indio_dev = dev_to_iio_dev(dev); + struct ade7758_state *st = iio_priv(indio_dev); + + mutex_lock(&st->buf_lock); + ret = __ade7758_spi_write_reg_8(dev, reg_address, val); mutex_unlock(&st->buf_lock); return ret; @@ -91,7 +99,7 @@ static int ade7758_spi_write_reg_24(struct device *dev, u8 reg_address, return ret; } -int ade7758_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) +static int __ade7758_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7758_state *st = iio_priv(indio_dev); @@ -111,7 +119,6 @@ int ade7758_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) }, }; - mutex_lock(&st->buf_lock); st->tx[0] = ADE7758_READ_REG(reg_address); st->tx[1] = 0; @@ -124,7 +131,19 @@ int ade7758_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) *val = st->rx[0]; error_ret: + return ret; +} + +int ade7758_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) +{ + struct iio_dev *indio_dev = dev_to_iio_dev(dev); + struct ade7758_state *st = iio_priv(indio_dev); + int ret; + + mutex_lock(&st->buf_lock); + ret = __ade7758_spi_read_reg_8(dev, reg_address, val); mutex_unlock(&st->buf_lock); + return ret; } @@ -480,10 +499,12 @@ static int ade7758_read_samp_freq(struct device *dev, int *val) return 0; } -static int ade7758_write_samp_freq(struct device *dev, int val) +static int ade7758_write_samp_freq(struct iio_dev *indio_dev, int val) { int ret; u8 reg, t; + struct ade7758_state *st = iio_priv(indio_dev); + struct device *dev = &indio_dev->dev; switch (val) { case 26040: @@ -499,20 +520,23 @@ static int ade7758_write_samp_freq(struct device *dev, int val) t = 3; break; default: - ret = -EINVAL; - goto out; + return -EINVAL; } - ret = ade7758_spi_read_reg_8(dev, ADE7758_WAVMODE, ®); + mutex_lock(&st->buf_lock); + + ret = __ade7758_spi_read_reg_8(dev, ADE7758_WAVMODE, ®); if (ret) goto out; reg &= ~(5 << 3); reg |= t << 5; - ret = ade7758_spi_write_reg_8(dev, ADE7758_WAVMODE, reg); + ret = __ade7758_spi_write_reg_8(dev, ADE7758_WAVMODE, reg); out: + mutex_unlock(&st->buf_lock); + return ret; } @@ -545,9 +569,9 @@ static int ade7758_write_raw(struct iio_dev *indio_dev, case IIO_CHAN_INFO_SAMP_FREQ: if (val2) return -EINVAL; - mutex_lock(&indio_dev->mlock); - ret = ade7758_write_samp_freq(&indio_dev->dev, val); - mutex_unlock(&indio_dev->mlock); + + ret = ade7758_write_samp_freq(indio_dev, val); + return ret; default: return -EINVAL; -- 2.7.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection 2018-02-05 19:40 ` [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection Shreeya Patel @ 2018-02-06 7:32 ` Ardelean, Alexandru 0 siblings, 0 replies; 5+ messages in thread From: Ardelean, Alexandru @ 2018-02-06 7:32 UTC (permalink / raw) To: lars@metafoo.de, knaack.h@gmx.de, jic23@kernel.org, Hennerich, Michael, linux-iio@vger.kernel.org, devel@driverdev.osuosl.org, pmeerw@pmeerw.net, shreeya.patel23498@gmail.com T24gVHVlLCAyMDE4LTAyLTA2IGF0IDAxOjEwICswNTMwLCBTaHJlZXlhIFBhdGVsIHdyb3RlOg0K PiBpaW9fZGV2LT5tbG9jayBpcyB0byBiZSB1c2VkIG9ubHkgYnkgdGhlIElJTyBjb3JlIGZvciBw cm90ZWN0aW5nDQo+IGRldmljZSBtb2RlIGNoYW5nZXMgYmV0d2VlbiBJTkRJT19ESVJFQ1QgYW5k IElORElPX0JVRkZFUi4NCj4gDQo+IFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIHVzZSBvZiBtbG9j ayB3aXRoIHRoZSBhbHJlYWR5IGVzdGFibGlzaGVkDQo+IGJ1Zl9sb2NrIG11dGV4Lg0KPiANCj4g SW50cm9kdWNpbmcgJ3VubG9ja2VkJyBmb3JtcyBvZiByZWFkIGFuZCB3cml0ZSByZWdpc3RlcnMu IFRoZQ0KPiByZWFkL3dyaXRlIGZyZXF1ZW5jeSBmdW5jdGlvbnMgbm93IHJlcXVpcmUgYnVmX2xv Y2sgdG8gYmUgaGVsZC4NCj4gVGhhdCdzIG5vdCBvYnZpb3VzIHNvIGF2b2lkIHRoaXMgYnV0IG1v dmluZyB0aGUgbG9ja2luZyBpbnNpZGUNCj4gdGhlIGZ1bmN0aW9ucyB3aGVyZSBpdCBpcyB0aGVu IGNsZWFyIHRoYXQgdGhleSBhcmUgdGFraW5nIHRoZQ0KPiB1bmxvY2tlZCBmb3JtcyBvZiB0aGUg cmVnaXN0ZXIgcmVhZC93cml0ZS4NCj4gDQo+IEl0IGlzbid0IHJlYWRpbHkgYXBwYXJlbnQgdGhh dCB3cml0ZSBmcmVxdWVuY3kgZnVuY3Rpb24gcmVxdWlyZXMNCj4gdGhlIGxvY2tzIHRvIGJlIHRh a2VuLCBzbyBtb3ZlIGl0IGluc2lkZSB0aGUgZnVuY3Rpb24gdG8gd2hlcmUgaXQNCj4gaXMgcmVx dWlyZWQgdG8gcHJvdGVjdC4NCg0KUmVtb3ZlZCBsaW51eC1rZXJuZWwgbGlzdCAmIEdyZWcgZnJv bSByZXBseSBsaXN0Lg0KDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBTaHJlZXlhIFBhdGVsIDxzaHJl ZXlhLnBhdGVsMjM0OThAZ21haWwuY29tPg0KPiAtLS0NCj4gDQo+IENoYW5nZXMgaW4gdjINCj4g ICAtQWRkIHN0YXRpYyBrZXl3b3JkIHRvIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zIGFuZCBy ZW1vdmUgc29tZQ0KPiBhZGRlZCBjb21tZW50cyB3aGljaCBhcmUgbm90IHJlcXVpcmVkLg0KPiAN Cj4gQ2hhbmdlcyBpbiB2Mw0KPiAgIC1SZW1vdmUgc29tZSB1c2VsZXNzIG1sb2NrcyBhbmQgc2Vu ZCBpdCBhcyBhbm90aGVyIHBhdGNoLg0KPiBBbHNvIG1ha2UgdGhlIG5lY2Vzc2FyeSBjaGFuZ2Ug aW4gdGhlIGN1cnJlbnQgcGF0Y2ggYXNzb2NpYXRlZCB3aXRoIA0KPiB0aGUgbmV3IHBhdGNoIHdp dGggY29tbWl0IGlkIDg4ZWJhMzMuIE1ha2UgY29tbWl0IG1lc3NhZ2UgbW9yZSANCj4gYXBwcm9w cmlhdGUuDQo+IA0KPiBDaGFuZ2VzIGluIHY0DQo+ICAgLVdyaXRlIGZyZXF1ZW5jeSBmdW5jdGlv biBkbyBub3QgcmVxdWlyZSBsb2NrIHNvIG1vdmUgaXQgaW5zaWRlDQo+IHRoZSBmdW5jdGlvbiB0 byB3aGVyZSBpdCBpcyByZXF1aXJlZCB0byBwcm90ZWN0Lg0KPiANCj4gQ2hhbmdlcyBpbiB2NQ0K PiAgIC1SZW1vdmUgZ290byBzdGF0ZW1lbnQgYW5kIG1ha2UgdGhlIGNvZGUgdG8gcmV0dXJuIC1F SU5WQUwgdGhlcmUNCj4gaXRzZWxmLiANCj4gDQo+ICBkcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVy L2FkZTc3NTguaCAgICAgIHwgIDIgKy0NCj4gIGRyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRl Nzc1OF9jb3JlLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KPiAtLS0NCj4g IDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4LmgNCj4gYi9k cml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaA0KPiBpbmRleCA2YWU3OGQ4Li4yZGU4 MWI1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaA0K PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaA0KPiBAQCAtMTExLDcg KzExMSw3IEBADQo+ICAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdp dGggaWlvDQo+ICAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyDQo+ICAgKiBAcng6CQkJcmVjZWl2 ZSBidWZmZXINCj4gLSAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4DQo+ ICsgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4LCByeCwgcmVhZCBhbmQgd3JpdGUN Cj4gZnJlcXVlbmN5DQo+ICAgKiovDQo+ICBzdHJ1Y3QgYWRlNzc1OF9zdGF0ZSB7DQo+ICAJc3Ry dWN0IHNwaV9kZXZpY2UJKnVzOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9t ZXRlci9hZGU3NzU4X2NvcmUuYw0KPiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1 OF9jb3JlLmMNCj4gaW5kZXggMjI3ZGJmYy4uZGZlOGU5NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4X2NvcmUuYw0KPiArKysgYi9kcml2ZXJzL3N0YWdp bmcvaWlvL21ldGVyL2FkZTc3NThfY29yZS5jDQo+IEBAIC0yNCwxNyArMjQsMjUgQEANCj4gICNp bmNsdWRlICJtZXRlci5oIg0KPiAgI2luY2x1ZGUgImFkZTc3NTguaCINCj4gIA0KPiAtaW50IGFk ZTc3NThfc3BpX3dyaXRlX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVnX2FkZHJlc3Ms IHU4IHZhbCkNCj4gK3N0YXRpYyBpbnQgX19hZGU3NzU4X3NwaV93cml0ZV9yZWdfOChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHU4IHJlZ19hZGRyZXNzLCB1OA0KPiB2YWwpDQo+ICB7DQo+IC0JaW50IHJl dDsNCj4gIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gZGV2X3RvX2lpb19kZXYoZGV2KTsN Cj4gIAlzdHJ1Y3QgYWRlNzc1OF9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiAg DQo+IC0JbXV0ZXhfbG9jaygmc3QtPmJ1Zl9sb2NrKTsNCj4gIAlzdC0+dHhbMF0gPSBBREU3NzU4 X1dSSVRFX1JFRyhyZWdfYWRkcmVzcyk7DQo+ICAJc3QtPnR4WzFdID0gdmFsOw0KPiAgDQo+IC0J cmV0ID0gc3BpX3dyaXRlKHN0LT51cywgc3QtPnR4LCAyKTsNCj4gKwlyZXR1cm4gc3BpX3dyaXRl KHN0LT51cywgc3QtPnR4LCAyKTsNCj4gK30NCj4gKw0KPiAraW50IGFkZTc3NThfc3BpX3dyaXRl X3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVnX2FkZHJlc3MsIHU4IHZhbCkNCj4gK3sN Cj4gKwlpbnQgcmV0Ow0KPiArCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlv X2RldihkZXYpOw0KPiArCXN0cnVjdCBhZGU3NzU4X3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlv X2Rldik7DQo+ICsNCj4gKwltdXRleF9sb2NrKCZzdC0+YnVmX2xvY2spOw0KPiArCXJldCA9IF9f YWRlNzc1OF9zcGlfd3JpdGVfcmVnXzgoZGV2LCByZWdfYWRkcmVzcywgdmFsKTsNCj4gIAltdXRl eF91bmxvY2soJnN0LT5idWZfbG9jayk7DQo+ICANCj4gIAlyZXR1cm4gcmV0Ow0KPiBAQCAtOTEs NyArOTksNyBAQCBzdGF0aWMgaW50IGFkZTc3NThfc3BpX3dyaXRlX3JlZ18yNChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHU4DQo+IHJlZ19hZGRyZXNzLA0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+ICAN Cj4gLWludCBhZGU3NzU4X3NwaV9yZWFkX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVn X2FkZHJlc3MsIHU4ICp2YWwpDQo+ICtzdGF0aWMgaW50IF9fYWRlNzc1OF9zcGlfcmVhZF9yZWdf OChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4IHJlZ19hZGRyZXNzLCB1OA0KPiAqdmFsKQ0KPiAgew0K PiAgCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlvX2RldihkZXYpOw0KPiAg CXN0cnVjdCBhZGU3NzU4X3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+IEBAIC0x MTEsNyArMTE5LDYgQEAgaW50IGFkZTc3NThfc3BpX3JlYWRfcmVnXzgoc3RydWN0IGRldmljZSAq ZGV2LCB1OA0KPiByZWdfYWRkcmVzcywgdTggKnZhbCkNCj4gIAkJfSwNCj4gIAl9Ow0KPiAgDQo+ IC0JbXV0ZXhfbG9jaygmc3QtPmJ1Zl9sb2NrKTsNCj4gIAlzdC0+dHhbMF0gPSBBREU3NzU4X1JF QURfUkVHKHJlZ19hZGRyZXNzKTsNCj4gIAlzdC0+dHhbMV0gPSAwOw0KPiAgDQo+IEBAIC0xMjQs NyArMTMxLDE5IEBAIGludCBhZGU3NzU4X3NwaV9yZWFkX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRl diwgdTgNCj4gcmVnX2FkZHJlc3MsIHU4ICp2YWwpDQo+ICAJKnZhbCA9IHN0LT5yeFswXTsNCj4g IA0KPiAgZXJyb3JfcmV0Og0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK2ludCBhZGU3 NzU4X3NwaV9yZWFkX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVnX2FkZHJlc3MsIHU4 ICp2YWwpDQo+ICt7DQo+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRldl90b19paW9f ZGV2KGRldik7DQo+ICsJc3RydWN0IGFkZTc3NThfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9f ZGV2KTsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJbXV0ZXhfbG9jaygmc3QtPmJ1Zl9sb2NrKTsN Cj4gKwlyZXQgPSBfX2FkZTc3NThfc3BpX3JlYWRfcmVnXzgoZGV2LCByZWdfYWRkcmVzcywgdmFs KTsNCj4gIAltdXRleF91bmxvY2soJnN0LT5idWZfbG9jayk7DQo+ICsNCj4gIAlyZXR1cm4gcmV0 Ow0KPiAgfQ0KPiAgDQo+IEBAIC00ODAsMTAgKzQ5OSwxMiBAQCBzdGF0aWMgaW50IGFkZTc3NThf cmVhZF9zYW1wX2ZyZXEoc3RydWN0IGRldmljZSAqZGV2LA0KPiBpbnQgKnZhbCkNCj4gIAlyZXR1 cm4gMDsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIGludCBhZGU3NzU4X3dyaXRlX3NhbXBfZnJlcShz dHJ1Y3QgZGV2aWNlICpkZXYsIGludCB2YWwpDQo+ICtzdGF0aWMgaW50IGFkZTc3NThfd3JpdGVf c2FtcF9mcmVxKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsIGludCB2YWwpDQoNCk1heWJlIGtl ZXAgdGhlIGRlY2xhcmF0aW9uIHRoZSBzYW1lLg0KVGhlIHNhbWUgY29uc3RydWN0IGZvciBhY2Nl c3NpbmcgaW5kaW9fZGV2IGNvdWxkIGJlIHVzZWQgYXMgYWJvdmUuDQpTbzogInN0cnVjdCBpaW9f ZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlvX2RldihkZXYpOyINCg0KPiAgew0KPiAgCWludCBy ZXQ7DQo+ICAJdTggcmVnLCB0Ow0KPiArCXN0cnVjdCBhZGU3NzU4X3N0YXRlICpzdCA9IGlpb19w cml2KGluZGlvX2Rldik7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmluZGlvX2Rldi0+ZGV2 Ow0KPiAgDQo+ICAJc3dpdGNoICh2YWwpIHsNCj4gIAljYXNlIDI2MDQwOg0KPiBAQCAtNDk5LDIw ICs1MjAsMjMgQEAgc3RhdGljIGludCBhZGU3NzU4X3dyaXRlX3NhbXBfZnJlcShzdHJ1Y3QgZGV2 aWNlICpkZXYsDQo+IGludCB2YWwpDQo+ICAJCXQgPSAzOw0KPiAgCQlicmVhazsNCj4gIAlkZWZh dWx0Og0KPiAtCQlyZXQgPSAtRUlOVkFMOw0KPiAtCQlnb3RvIG91dDsNCj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ICAJfQ0KPiAgDQo+IC0JcmV0ID0gYWRlNzc1OF9zcGlfcmVhZF9yZWdfOChkZXYs IEFERTc3NThfV0FWTU9ERSwgJnJlZyk7DQo+ICsJbXV0ZXhfbG9jaygmc3QtPmJ1Zl9sb2NrKTsN Cj4gKw0KPiArCXJldCA9IF9fYWRlNzc1OF9zcGlfcmVhZF9yZWdfOChkZXYsIEFERTc3NThfV0FW TU9ERSwgJnJlZyk7DQo+ICAJaWYgKHJldCkNCj4gIAkJZ290byBvdXQ7DQo+ICANCj4gIAlyZWcg Jj0gfig1IDw8IDMpOw0KPiAgCXJlZyB8PSB0IDw8IDU7DQo+ICANCj4gLQlyZXQgPSBhZGU3NzU4 X3NwaV93cml0ZV9yZWdfOChkZXYsIEFERTc3NThfV0FWTU9ERSwgcmVnKTsNCj4gKwlyZXQgPSBf X2FkZTc3NThfc3BpX3dyaXRlX3JlZ184KGRldiwgQURFNzc1OF9XQVZNT0RFLCByZWcpOw0KPiAg DQo+ICBvdXQ6DQo+ICsJbXV0ZXhfdW5sb2NrKCZzdC0+YnVmX2xvY2spOw0KPiArDQo+ICAJcmV0 dXJuIHJldDsNCj4gIH0NCj4gIA0KPiBAQCAtNTQ1LDkgKzU2OSw5IEBAIHN0YXRpYyBpbnQgYWRl Nzc1OF93cml0ZV9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gIAljYXNlIElJT19D SEFOX0lORk9fU0FNUF9GUkVROg0KPiAgCQlpZiAodmFsMikNCj4gIAkJCXJldHVybiAtRUlOVkFM Ow0KPiAtCQltdXRleF9sb2NrKCZpbmRpb19kZXYtPm1sb2NrKTsNCj4gLQkJcmV0ID0gYWRlNzc1 OF93cml0ZV9zYW1wX2ZyZXEoJmluZGlvX2Rldi0+ZGV2LCB2YWwpOw0KPiAtCQltdXRleF91bmxv Y2soJmluZGlvX2Rldi0+bWxvY2spOw0KPiArDQo+ICsJCXJldCA9IGFkZTc3NThfd3JpdGVfc2Ft cF9mcmVxKGluZGlvX2RldiwgdmFsKTsNCj4gKw0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgCWRlZmF1 bHQ6DQo+ICAJCXJldHVybiAtRUlOVkFMOw== ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-02-06 7:32 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-05 19:35 [PATCH 0/2] Remove usage of mlocks from ade7758 file Shreeya Patel 2018-02-05 19:38 ` [PATCH 1/2] Staging: iio: ade7758: Remove iio_dev mlock Shreeya Patel 2018-02-06 7:23 ` Ardelean, Alexandru 2018-02-05 19:40 ` [PATCH v5 2/2] Staging: iio: ade7758: Expand buf_lock to cover both buffer and state protection Shreeya Patel 2018-02-06 7:32 ` Ardelean, Alexandru
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).