Mailing List Archive

Re: [patch] fix for accept on unix-domain sockets
Hello!
> The reason is, that skb_recv_datagram is used get incoming connection requests, but this checks
> if a SOCK_STREAM socket is in TCP_ESTABLISHED state before waiting.
Opla! Thank you.
The patch is incorrect (racy), but you can make correct one
if copy part of skb_recv_datagram, omitting offending line
and some useless checks (f.e. sk->shutdown, socket_error() etc)
Alexey Kuznetsov
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
Re: [patch] fix for accept on unix-domain sockets [ In reply to ]
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
On Thu, 28 Oct 1999, kuznet@ms2.inr.ac.ru wrote:
>> The reason is, that skb_recv_datagram is used get incoming connection requests, but this checks
>> if a SOCK_STREAM socket is in TCP_ESTABLISHED state before waiting.
>
>Opla! Thank you.
>
>The patch is incorrect (racy), but you can make correct one
>if copy part of skb_recv_datagram, omitting offending line
>and some useless checks (f.e. sk->shutdown, socket_error() etc)
Ok, here is my corrected version.
Is it possible to make a generic race-free skb_wait_datagram function, because some other
protocols might need this too for their accept call (ax25, x25, irda, rose, spx)
Lars
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/x-c;
name="unix.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="unix.diff"
LS0tIGxpbnV4Lm9yaWcvbmV0L3VuaXgvYWZfdW5peC5jCVRodSBPY3QgMjggMTg6MjU6MTEgMTk5
OQorKysgbGludXgvbmV0L3VuaXgvYWZfdW5peC5jCUZyaSBPY3QgMjkgMDc6NTY6NTEgMTk5OQpA
QCAtOTQyLDEwICs5NDIsNDYgQEAKIAkJc29ja2ItPnN0YXRlPVNTX0NPTk5FQ1RFRDsKIAl9CiAJ
cmV0dXJuIDA7CiB9CiAKKy8qCisgKiBXYWl0IGZvciBhIHBhY2tldC4uCisgKi8KKworc3RhdGlj
IGludCB1bml4X3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IHNvY2sgKiBzaywgaW50ICplcnIpCit7
CisJaW50IGVycm9yOworCisJREVDTEFSRV9XQUlUUVVFVUUod2FpdCwgY3VycmVudCk7CisKKwlf
X3NldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CisJYWRkX3dhaXRfcXVldWUo
c2stPnNsZWVwLCAmd2FpdCk7CisKKwlpZiAoIXNrYl9xdWV1ZV9lbXB0eSgmc2stPnJlY2VpdmVf
cXVldWUpKQorCQlnb3RvIHJlYWR5OworCisJLyogaGFuZGxlIHNpZ25hbHMgKi8KKwllcnJvciA9
IC1FUkVTVEFSVFNZUzsKKwlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCisJCWdvdG8gb3V0
OworCisJc2NoZWR1bGUoKTsKKworcmVhZHk6CisJY3VycmVudC0+c3RhdGUgPSBUQVNLX1JVTk5J
Tkc7CisJcmVtb3ZlX3dhaXRfcXVldWUoc2stPnNsZWVwLCAmd2FpdCk7CisJcmV0dXJuIDA7CisK
K291dDoKKwljdXJyZW50LT5zdGF0ZSA9IFRBU0tfUlVOTklORzsKKwlyZW1vdmVfd2FpdF9xdWV1
ZShzay0+c2xlZXAsICZ3YWl0KTsKKwkqZXJyID0gZXJyb3I7CisJcmV0dXJuIGVycm9yOworfQor
CisKIHN0YXRpYyBpbnQgdW5peF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNv
Y2tldCAqbmV3c29jaywgaW50IGZsYWdzKQogewogCXVuaXhfc29ja2V0ICpzayA9IHNvY2stPnNr
OwogCXVuaXhfc29ja2V0ICp0c2s7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKQEAgLTk1OSwyMCAr
OTk1LDI4IEBACiAJaWYgKHNrLT5zdGF0ZSE9VENQX0xJU1RFTikKIAkJZ290byBvdXQ7CiAKIAkv
KiBJZiBzb2NrZXQgc3RhdGUgaXMgVENQX0xJU1RFTiBpdCBjYW5ub3QgY2hhbmdlLAogCSAgIHNv
IHRoYXQgbm8gbG9ja3MgYXJlIG5lY2Vzc2FyeS4KKyAKKwkgICBJdCdzIG5vdCBwb3NzaWJsZSB0
byB1c2Ugc2tiX3JlY3ZfZGF0YWdyYW0gaGVyZSwKKwkgICBiZWNhdXNlIHRoaXMgY2hlY2tzIGlm
IHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkLgogCSAqLwotCi0Jc2tiID0gc2tiX3JlY3ZfZGF0YWdy
YW0oc2ssIDAsIGZsYWdzJk9fTk9OQkxPQ0ssICZlcnIpOwotCWlmICghc2tiKQotCQlnb3RvIG91
dDsKKwkKKwl3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZzay0+cmVjZWl2ZV9xdWV1ZSkpID09
IE5VTEwpIHsKKwkJaWYgKGZsYWdzJk9fTk9OQkxPQ0spIHsKKwkJCWVyciA9IC1FQUdBSU47CisJ
CQlnb3RvIG91dDsKKwkJfQorCQlpZiAodW5peF93YWl0X2Zvcl9jb25uZWN0KHNrLCAmZXJyKSAh
PSAwKQorCQkJZ290byBvdXQ7CisgICAgICAgIH0KIAogCXRzayA9IHNrYi0+c2s7CisJa2ZyZWVf
c2tiKHNrYik7CiAJaWYgKHNrYl9xdWV1ZV9sZW4oJnNrLT5yZWNlaXZlX3F1ZXVlKSA8PSBzay0+
bWF4X2Fja19iYWNrbG9nLzIpCiAJCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmc2stPnByb3RpbmZv
LmFmX3VuaXgucGVlcl93YWl0KTsKLQlza2JfZnJlZV9kYXRhZ3JhbShzaywgc2tiKTsKIAogCS8q
IGF0dGFjaCBhY2NlcHRlZCBzb2NrIHRvIHNvY2tldCAqLwogCXVuaXhfc3RhdGVfd2xvY2sodHNr
KTsKIAluZXdzb2NrLT5zdGF0ZSA9IFNTX0NPTk5FQ1RFRDsKIAluZXdzb2NrLT5zayA9IHRzazsK
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/