瀏覽代碼

i2c: qup: disable clks and return instead of just returning error

This fixes a error handling scenario where clocks were not being disabled
when QUP_OUTPUT_BLOCK_SIZE returns a size greater than the size of blk_sizes
array. So this patch adds a statement to jump to the fail lable to release the
clocks.

Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com>
Acked-by: Ivan T. Ivanov <iivanov@mm-sol.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Pramod Gurav 11 年之前
父節點
當前提交
3cf357dfb4
共有 1 個文件被更改,包括 8 次插入4 次删除
  1. 8 4
      drivers/i2c/busses/i2c-qup.c

+ 8 - 4
drivers/i2c/busses/i2c-qup.c

@@ -633,13 +633,17 @@ static int qup_i2c_probe(struct platform_device *pdev)
 	 * associated with each byte written/received
 	 * associated with each byte written/received
 	 */
 	 */
 	size = QUP_OUTPUT_BLOCK_SIZE(io_mode);
 	size = QUP_OUTPUT_BLOCK_SIZE(io_mode);
-	if (size >= ARRAY_SIZE(blk_sizes))
-		return -EIO;
+	if (size >= ARRAY_SIZE(blk_sizes)) {
+		ret = -EIO;
+		goto fail;
+	}
 	qup->out_blk_sz = blk_sizes[size] / 2;
 	qup->out_blk_sz = blk_sizes[size] / 2;
 
 
 	size = QUP_INPUT_BLOCK_SIZE(io_mode);
 	size = QUP_INPUT_BLOCK_SIZE(io_mode);
-	if (size >= ARRAY_SIZE(blk_sizes))
-		return -EIO;
+	if (size >= ARRAY_SIZE(blk_sizes)) {
+		ret = -EIO;
+		goto fail;
+	}
 	qup->in_blk_sz = blk_sizes[size] / 2;
 	qup->in_blk_sz = blk_sizes[size] / 2;
 
 
 	size = QUP_OUTPUT_FIFO_SIZE(io_mode);
 	size = QUP_OUTPUT_FIFO_SIZE(io_mode);