@@ -1500,19 +1500,18 @@ static void p2p_try_connect_group(struct p2p_device *dev)
struct iovec ie_iov[16];
int ie_num = 0;
int r;
- struct p2p_association_req info = {};
+ struct p2p_association_req info = {
+ .capability = dev->capability,
+ .device_info = dev->device_info,
+ };
struct ie_rsn_info bss_info = {};
struct ie_rsn_info rsn_info = {};
uint8_t rsne_buf[256];
uint8_t wfd_ie[32];
+ _auto_(l_free) uint8_t *req_ie =
+ p2p_build_association_req(&info, &ie_iov[ie_num].iov_len);
- info.capability = dev->capability;
- info.device_info = dev->device_info;
-
- ie_iov[0].iov_base = p2p_build_association_req(&info,
- &ie_iov[0].iov_len);
- L_WARN_ON(!ie_iov[0].iov_base);
- ie_num = 1;
+ ie_iov[ie_num++].iov_base = req_ie;
if (dev->conn_own_wfd) {
ie_iov[ie_num].iov_base = wfd_ie;
@@ -1564,15 +1563,11 @@ static void p2p_try_connect_group(struct p2p_device *dev)
l_steal_ptr(hs);
dev->conn_retry_count++;
-
-done:
- l_free(ie_iov[0].iov_base);
return;
error:
not_supported:
p2p_connect_failed(dev);
- goto done;
}
static void p2p_peer_provision_done(int err, struct wsc_credentials_info *creds,