1 |
Git bisect if officially the coolest thing i've seen in a long time. I |
2 |
wish i would have known about it earlier... |
3 |
|
4 |
Anyways... |
5 |
|
6 |
e5a4b0bb803b39a36478451eae53a880d2663d5b is the first bad commit |
7 |
commit e5a4b0bb803b39a36478451eae53a880d2663d5b |
8 |
Author: Al Viro <viro@×××××××××××××××.uk> |
9 |
Date: Mon Nov 24 18:17:55 2014 -0500 |
10 |
|
11 |
switch memcpy_to_msg() and skb_copy{,_and_csum}_datagram_msg() to |
12 |
primitives |
13 |
|
14 |
... making both non-draining. That means that tcp_recvmsg() becomes |
15 |
non-draining. And _that_ would break iscsit_do_rx_data() unless we |
16 |
a) make sure tcp_recvmsg() is uniformly non-draining (it is) |
17 |
b) make sure it copes with arbitrary (including shifted) |
18 |
iov_iter (it does, all it uses is iov_iter primitives) |
19 |
c) make iscsit_do_rx_data() initialize ->msg_iter only once. |
20 |
|
21 |
Fortunately, (c) is doable with minimal work and we are rid of one |
22 |
the two places where kernel send/recvmsg users would be unhappy with |
23 |
non-draining behaviour. |
24 |
|
25 |
Actually, that makes all but one of ->recvmsg() instances |
26 |
iov_iter-clean. |
27 |
The exception is skcipher_recvmsg() and it also isn't hard to convert |
28 |
to primitives (iov_iter_get_pages() is needed there). That'll wait |
29 |
a bit - there's some interplay with ->sendmsg() path for that one. |
30 |
|
31 |
Signed-off-by: Al Viro <viro@×××××××××××××××.uk> |
32 |
|
33 |
:040000 040000 b4d6852e73bd3d54a30b72441c8e35f79dc07266 |
34 |
f0b90ef68ee891b38decf571247002c1d7fad519 M drivers |
35 |
:040000 040000 8ba2fadf14c05a86a7c21448dac52fed661a2e12 |
36 |
0051ec4b6f273dbaed2bed21e4fddd48664d5afa M include |
37 |
:040000 040000 d28e72369891521f7d853b30612a32cf65a27f6b |
38 |
b828e68082a6fed2cf240aad4b365c5808928122 M net |