3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2025-01-03 10:32:33 +01:00

p2p: Free parsed frame data in p2p_go_negotiation_confirm_cb

This commit is contained in:
Andrew Zaborowski 2020-09-21 21:04:23 +02:00 committed by Denis Kenzior
parent 47596c67d3
commit c58b91dfd4

View File

@ -1810,19 +1810,19 @@ static bool p2p_go_negotiation_confirm_cb(const struct mmpdu_header *mpdu,
if (info.dialog_token != dev->conn_go_dialog_token) { if (info.dialog_token != dev->conn_go_dialog_token) {
l_error("GO Negotiation Response dialog token doesn't match"); l_error("GO Negotiation Response dialog token doesn't match");
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
if (info.status != P2P_STATUS_SUCCESS) { if (info.status != P2P_STATUS_SUCCESS) {
l_error("GO Negotiation Confirmation status %i", info.status); l_error("GO Negotiation Confirmation status %i", info.status);
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
/* Check whether WFD IE is required, validate it if present */ /* Check whether WFD IE is required, validate it if present */
if (!p2p_device_validate_conn_wfd(dev, info.wfd, info.wfd_size)) { if (!p2p_device_validate_conn_wfd(dev, info.wfd, info.wfd_size)) {
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
/* /*
@ -1833,7 +1833,7 @@ static bool p2p_go_negotiation_confirm_cb(const struct mmpdu_header *mpdu,
if (!p2p_device_validate_channel_list(dev, &info.channel_list, if (!p2p_device_validate_channel_list(dev, &info.channel_list,
&info.operating_channel)) { &info.operating_channel)) {
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
/* /*
@ -1852,7 +1852,7 @@ static bool p2p_go_negotiation_confirm_cb(const struct mmpdu_header *mpdu,
l_error("Bad operating channel in GO Negotiation " l_error("Bad operating channel in GO Negotiation "
"Confirmation"); "Confirmation");
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
/* /*
@ -1873,7 +1873,7 @@ static bool p2p_go_negotiation_confirm_cb(const struct mmpdu_header *mpdu,
l_error("Bad operating channel in GO Negotiation " l_error("Bad operating channel in GO Negotiation "
"Confirmation"); "Confirmation");
p2p_connect_failed(dev); p2p_connect_failed(dev);
return true; goto cleanup;
} }
dev->conn_go_oper_freq = frequency; dev->conn_go_oper_freq = frequency;
@ -1892,6 +1892,8 @@ static bool p2p_go_negotiation_confirm_cb(const struct mmpdu_header *mpdu,
p2p_config_timeout_destroy); p2p_config_timeout_destroy);
} }
cleanup:
p2p_clear_go_negotiation_confirmation(&info);
return true; return true;
} }