Commit 1f94837a authored by Pavel Emelyanov's avatar Pavel Emelyanov

sk: Sanitize socket's fowner and flags restore

The conn job misses fowner restoratio. Other places are ok, but toss
the code for easier next patching.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent bd6e8df4
...@@ -915,9 +915,6 @@ static int open_inet_sk(struct file_desc *d) ...@@ -915,9 +915,6 @@ static int open_inet_sk(struct file_desc *d)
return -1; return -1;
} }
if (restore_fown(sk, &ii->ie.fown))
goto err;
/* /*
* Listen sockets are easiest ones -- simply * Listen sockets are easiest ones -- simply
* bind() and listen(), and that's all. * bind() and listen(), and that's all.
...@@ -981,6 +978,8 @@ static int open_inet_sk(struct file_desc *d) ...@@ -981,6 +978,8 @@ static int open_inet_sk(struct file_desc *d)
if (set_fd_flags(sk, ii->ie.flags)) if (set_fd_flags(sk, ii->ie.flags))
return -1; return -1;
if (restore_fown(sk, &ii->ie.fown))
goto err;
return sk; return sk;
...@@ -1175,6 +1174,8 @@ try_again: ...@@ -1175,6 +1174,8 @@ try_again:
if (set_fd_flags(fle->fe.fd, ui->ue.flags)) if (set_fd_flags(fle->fe.fd, ui->ue.flags))
return -1; return -1;
if (restore_fown(fle->fe.fd, &ui->ue.fown))
return -1;
cj = cj->next; cj = cj->next;
} }
...@@ -1237,17 +1238,12 @@ static int open_unixsk_pair_master(struct unix_sk_info *ui) ...@@ -1237,17 +1238,12 @@ static int open_unixsk_pair_master(struct unix_sk_info *ui)
if (restore_sk_queue(sk[1], ui->ue.id)) if (restore_sk_queue(sk[1], ui->ue.id))
return -1; return -1;
if (set_fd_flags(sk[0], ui->ue.flags)) if (bind_unix_sk(sk[0], ui))
return -1;
if (set_fd_flags(sk[1], peer->ue.flags))
return -1; return -1;
if (restore_fown(sk[0], &ui->ue.fown)) if (set_fd_flags(sk[0], ui->ue.flags))
return -1;
if (restore_fown(sk[1], &peer->ue.fown))
return -1; return -1;
if (restore_fown(sk[0], &ui->ue.fown))
if (bind_unix_sk(sk[0], ui))
return -1; return -1;
tsk = socket(PF_UNIX, SOCK_DGRAM, 0); tsk = socket(PF_UNIX, SOCK_DGRAM, 0);
...@@ -1288,6 +1284,10 @@ static int open_unixsk_pair_slave(struct unix_sk_info *ui) ...@@ -1288,6 +1284,10 @@ static int open_unixsk_pair_slave(struct unix_sk_info *ui)
if (bind_unix_sk(sk, ui)) if (bind_unix_sk(sk, ui))
return -1; return -1;
if (set_fd_flags(sk, ui->ue.flags))
return -1;
if (restore_fown(sk, &ui->ue.fown))
return -1;
return sk; return sk;
} }
...@@ -1304,9 +1304,6 @@ static int open_unixsk_standalone(struct unix_sk_info *ui) ...@@ -1304,9 +1304,6 @@ static int open_unixsk_standalone(struct unix_sk_info *ui)
return -1; return -1;
} }
if (restore_fown(sk, &ui->ue.fown))
return -1;
if (bind_unix_sk(sk, ui)) if (bind_unix_sk(sk, ui))
return -1; return -1;
...@@ -1316,6 +1313,11 @@ static int open_unixsk_standalone(struct unix_sk_info *ui) ...@@ -1316,6 +1313,11 @@ static int open_unixsk_standalone(struct unix_sk_info *ui)
pr_perror("Can't make usk listen"); pr_perror("Can't make usk listen");
return -1; return -1;
} }
if (set_fd_flags(sk, ui->ue.flags))
return -1;
if (restore_fown(sk, &ui->ue.fown))
return -1;
} else if (ui->peer) { } else if (ui->peer) {
pr_info("\tWill connect %#x to %#x later\n", ui->ue.id, ui->ue.peer); pr_info("\tWill connect %#x to %#x later\n", ui->ue.id, ui->ue.peer);
if (schedule_conn_job(ui)) if (schedule_conn_job(ui))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment