mirror of https://gitee.com/openkylin/linux.git
drivers/net/wireless/wl1251: add missing kfree
In each case, the kfree already at the end of the function is also needed in the error case. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @exists@ local idexpression x; statement S,S1; expression E; identifier fl; expression *ptr != NULL; @@ x = \(kmalloc\|kzalloc\|kcalloc\)(...); ... if (x == NULL) S <... when != x when != if (...) { <+...kfree(x)...+> } when any when != true x == NULL x->fl ...> ( if (x == NULL) S1 | if (...) { ... when != x when forall ( return \(0\|<+...x...+>\|ptr\); | * return ...; ) } ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
bdc71bc592
commit
059c438355
|
@ -140,8 +140,6 @@ int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth)
|
|||
auth->sleep_auth = sleep_auth;
|
||||
|
||||
ret = wl1251_cmd_configure(wl, ACX_SLEEP_AUTH, auth, sizeof(*auth));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
out:
|
||||
kfree(auth);
|
||||
|
@ -681,10 +679,8 @@ int wl1251_acx_cca_threshold(struct wl1251 *wl)
|
|||
|
||||
ret = wl1251_cmd_configure(wl, ACX_CCA_THRESHOLD,
|
||||
detection, sizeof(*detection));
|
||||
if (ret < 0) {
|
||||
if (ret < 0)
|
||||
wl1251_warning("failed to set cca threshold: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
out:
|
||||
kfree(detection);
|
||||
|
|
|
@ -241,7 +241,7 @@ int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
|
|||
if (ret < 0) {
|
||||
wl1251_error("tx %s cmd for channel %d failed",
|
||||
enable ? "start" : "stop", channel);
|
||||
return ret;
|
||||
goto out;
|
||||
}
|
||||
|
||||
wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d",
|
||||
|
|
Loading…
Reference in New Issue