Commit 65dbd7c2778f1921ef1ee2a73e47a2a126fed30f

Authored by Hendrik Brueckner
Committed by David S. Miller
1 parent 18becbc547

af_iucv: Free iucv path/socket in path_pending callback

Free iucv path after iucv_path_sever() calls in iucv_callback_connreq()
(path_pending() iucv callback).
If iucv_path_accept() fails, free path and free/kill newly created socket.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 5 additions and 0 deletions Side-by-side Diff

... ... @@ -1042,12 +1042,14 @@
1042 1042 ASCEBC(user_data, sizeof(user_data));
1043 1043 if (sk->sk_state != IUCV_LISTEN) {
1044 1044 err = iucv_path_sever(path, user_data);
  1045 + iucv_path_free(path);
1045 1046 goto fail;
1046 1047 }
1047 1048  
1048 1049 /* Check for backlog size */
1049 1050 if (sk_acceptq_is_full(sk)) {
1050 1051 err = iucv_path_sever(path, user_data);
  1052 + iucv_path_free(path);
1051 1053 goto fail;
1052 1054 }
1053 1055  
... ... @@ -1055,6 +1057,7 @@
1055 1057 nsk = iucv_sock_alloc(NULL, SOCK_STREAM, GFP_ATOMIC);
1056 1058 if (!nsk) {
1057 1059 err = iucv_path_sever(path, user_data);
  1060 + iucv_path_free(path);
1058 1061 goto fail;
1059 1062 }
1060 1063  
... ... @@ -1078,6 +1081,8 @@
1078 1081 err = iucv_path_accept(path, &af_iucv_handler, nuser_data, nsk);
1079 1082 if (err) {
1080 1083 err = iucv_path_sever(path, user_data);
  1084 + iucv_path_free(path);
  1085 + iucv_sock_kill(nsk);
1081 1086 goto fail;
1082 1087 }
1083 1088