From 1bf73ddc9e1662d899fda3e0dd8884b0f566b130 Mon Sep 17 00:00:00 2001 From: yxj Date: Fri, 28 Jun 2013 14:13:05 +0800 Subject: [PATCH] mfd:rk616:core:fix rk616_i2c_write_bits --- drivers/mfd/rk616-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/rk616-core.c b/drivers/mfd/rk616-core.c index 376ecb07b990..fd3dfbef1dc1 100755 --- a/drivers/mfd/rk616-core.c +++ b/drivers/mfd/rk616-core.c @@ -103,13 +103,15 @@ static int rk616_i2c_write_bits(struct mfd_rk616 *rk616, u16 reg,u32 mask,u32 *p int ret; u32 reg_val; char *tx_buf = NULL; - mutex_lock(&rk616->reg_lock); + tx_buf = (char *)kmalloc(6, GFP_KERNEL); if(!tx_buf) return -ENOMEM; + mutex_lock(&rk616->reg_lock); rk616->read_dev(rk616,reg,®_val); reg_val &= ~mask; + *pval &= mask; reg_val |= *pval; *pval = reg_val; memcpy(tx_buf, ®, 2); -- 2.34.1