]> git.baikalelectronics.ru Git - kernel.git/commit
regmap: irq: Set data pointer only on regmap_add_irq_chip success
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Thu, 13 Mar 2014 08:06:01 +0000 (09:06 +0100)
committerMark Brown <broonie@linaro.org>
Thu, 13 Mar 2014 21:47:36 +0000 (21:47 +0000)
commitbde839ea77538b73a56fb82a2dfb9a4b92bb6423
tree4e7f240e84992ef6f69047db0c69904be327babf
parent876c25080bd54a35b88168ceb8118b93ce632c76
regmap: irq: Set data pointer only on regmap_add_irq_chip success

After setting the 'data' pointer (wchich is returned to the caller for
freeing later) the regmap_add_irq_chip() could still fail for various
reasons (ENOMEM, regmap_read or regmap_write failure). In such case the
memory under 'data' was freed in error path and error value was returned
but the 'data' variable was not changed.

This could lead to errors if the caller passed such 'data' to
regmap_del_irq_chip().

The 'data' pointer should be changed atomically from the caller
perspective - set it only on regmap_add_irq_chip() success.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/base/regmap/regmap-irq.c