lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 6 Aug 2012 15:15:17 +0000
From:	"Opensource [Anthony Olech]" <anthony.olech.opensource@...semi.com>
To:	Mark Brown <broonie@...nsource.wolfsonmicro.com>,
	"Opensource [Anthony Olech]" <anthony.olech.opensource@...semi.com>
CC:	LKML <linux-kernel@...r.kernel.org>
Subject: RE: [NEW DRIVER V1 5/7] DA9058 GPIO driver

Thanks Mark for looking at the DA9058 GPIO component driver.

I do realize that REGMAP does locking on individual register accesses,
however, the each GPIO line is controlled by 4-bits in a register, with
the meaning of the most significant bit depending on the GPIO direction,
so it is essential that the register be read first before do an update, thus
two sequential register accesses must be protected by a mutex to
prevent another process changing the register (and hence the meaning
of the most-significant bit) in the middle of the two accesses.

I hope this explains to your satisfaction why a driver mutex is required
in addition to the regmap's register access mutex

Tony Olech

-----Original Message-----
From: Mark Brown [mailto:broonie@...nsource.wolfsonmicro.com] 
Sent: 02 August 2012 11:20
To: Opensource [Anthony Olech]
Cc: LKML
Subject: Re: [NEW DRIVER V1 5/7] DA9058 GPIO driver

On Thu, Aug 02, 2012 at 09:48:57AM +0100, Anthony Olech wrote:

> +	mutex_lock(&gpio->lock);
> +	ret = da9058_reg_read(da9058, DA9058_STATUSC_REG, &gpio_level);
> +	mutex_unlock(&gpio->lock);

regmap already does locking for you.

> +	ret = da9058_reg_read(da9058, DA9058_GPIO0001_REG, &gpio_cntrl);
> +	if (ret)
> +		goto exit;
> +
> +	if (offset) {
> +		gpio_cntrl &= ~0xF0;
> +		gpio_cntrl |= 0xF0 & gpio->out_config;
> +
> +		ret = da9058_reg_write(da9058, DA9058_GPIO0001_REG, gpio_cntrl);

Just use regmap_update_bits().
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ