Commit 69139d2
vsock: fix recursive ->recvmsg calls
After a vsock socket has been added to a BPF sockmap, its prot->recvmsg
has been replaced with vsock_bpf_recvmsg(). Thus the following
recursiion could happen:
vsock_bpf_recvmsg()
-> __vsock_recvmsg()
-> vsock_connectible_recvmsg()
-> prot->recvmsg()
-> vsock_bpf_recvmsg() again
We need to fix it by calling the original ->recvmsg() without any BPF
sockmap logic in __vsock_recvmsg().
Fixes: 634f1a7 ("vsock: support sockmap")
Reported-by: syzbot+bdb4bd87b5e22058e2a4@syzkaller.appspotmail.com
Tested-by: syzbot+bdb4bd87b5e22058e2a4@syzkaller.appspotmail.com
Cc: Bobby Eshleman <bobby.eshleman@bytedance.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Cong Wang <cong.wang@bytedance.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Link: https://patch.msgid.link/20240812022153.86512-1-xiyou.wangcong@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>1 parent b2ca166 commit 69139d2
3 files changed
Lines changed: 35 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
230 | 230 | | |
231 | 231 | | |
232 | 232 | | |
| 233 | + | |
| 234 | + | |
233 | 235 | | |
234 | 236 | | |
| 237 | + | |
| 238 | + | |
235 | 239 | | |
236 | 240 | | |
237 | 241 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1270 | 1270 | | |
1271 | 1271 | | |
1272 | 1272 | | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
1273 | 1282 | | |
1274 | 1283 | | |
1275 | 1284 | | |
1276 | 1285 | | |
| 1286 | + | |
1277 | 1287 | | |
1278 | | - | |
1279 | | - | |
1280 | | - | |
1281 | 1288 | | |
1282 | | - | |
1283 | | - | |
1284 | | - | |
1285 | | - | |
1286 | 1289 | | |
1287 | 1290 | | |
1288 | 1291 | | |
1289 | 1292 | | |
1290 | 1293 | | |
1291 | | - | |
| 1294 | + | |
1292 | 1295 | | |
1293 | 1296 | | |
1294 | 1297 | | |
| |||
2174 | 2177 | | |
2175 | 2178 | | |
2176 | 2179 | | |
2177 | | - | |
2178 | | - | |
| 2180 | + | |
| 2181 | + | |
2179 | 2182 | | |
2180 | 2183 | | |
2181 | 2184 | | |
2182 | 2185 | | |
2183 | | - | |
2184 | | - | |
2185 | | - | |
2186 | 2186 | | |
2187 | 2187 | | |
2188 | 2188 | | |
| |||
2233 | 2233 | | |
2234 | 2234 | | |
2235 | 2235 | | |
2236 | | - | |
2237 | | - | |
2238 | | - | |
2239 | | - | |
2240 | | - | |
2241 | | - | |
2242 | | - | |
2243 | | - | |
2244 | 2236 | | |
2245 | 2237 | | |
2246 | 2238 | | |
| |||
2250 | 2242 | | |
2251 | 2243 | | |
2252 | 2244 | | |
| 2245 | + | |
| 2246 | + | |
| 2247 | + | |
| 2248 | + | |
| 2249 | + | |
| 2250 | + | |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
| 2256 | + | |
| 2257 | + | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
2253 | 2261 | | |
2254 | 2262 | | |
2255 | 2263 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
0 commit comments