瀏覽代碼

hwmon: (ibmaem) add missing kfree

rs_resp is dynamically allocated in aem_read_sensor(), so it should be freed
before exiting in every case.  This collects the kfree and the return at
the end of the function.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Cc: stable@kernel.org # 2.6.27+
Julia Lawall 14 年之前
父節點
當前提交
66a89b2164
共有 1 個文件被更改,包括 10 次插入5 次删除
  1. 10 5
      drivers/hwmon/ibmaem.c

+ 10 - 5
drivers/hwmon/ibmaem.c

@@ -432,13 +432,15 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
 	aem_send_message(ipmi);
 	aem_send_message(ipmi);
 
 
 	res = wait_for_completion_timeout(&ipmi->read_complete, IPMI_TIMEOUT);
 	res = wait_for_completion_timeout(&ipmi->read_complete, IPMI_TIMEOUT);
-	if (!res)
-		return -ETIMEDOUT;
+	if (!res) {
+		res = -ETIMEDOUT;
+		goto out;
+	}
 
 
 	if (ipmi->rx_result || ipmi->rx_msg_len != rs_size ||
 	if (ipmi->rx_result || ipmi->rx_msg_len != rs_size ||
 	    memcmp(&rs_resp->id, &system_x_id, sizeof(system_x_id))) {
 	    memcmp(&rs_resp->id, &system_x_id, sizeof(system_x_id))) {
-		kfree(rs_resp);
-		return -ENOENT;
+		res = -ENOENT;
+		goto out;
 	}
 	}
 
 
 	switch (size) {
 	switch (size) {
@@ -463,8 +465,11 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
 		break;
 		break;
 	}
 	}
 	}
 	}
+	res = 0;
 
 
-	return 0;
+out:
+	kfree(rs_resp);
+	return res;
 }
 }
 
 
 /* Update AEM energy registers */
 /* Update AEM energy registers */