Hi!
From: Dmitry Yakunin zeil@yandex-team.ru
[ Upstream commit 018d26fcd12a75fb9b5fe233762aa3f2f0854b88 ]
...
Now update is non atomic and socket may be skipped using calls:
dup2(oldfd, newfd); close(oldfd);
But this case is not typical. Moreover before this patch skip is possible too by hiding socket fd in unix socket buffer.
Dunno. This makes interface even more interesting.
static int update_classid_sock(const void *v, struct file *file, unsigned n) { int err;
- struct update_classid_context *ctx = (void *)v; struct socket *sock = sock_from_file(file, &err);
...
- if (--ctx->batch == 0) {
ctx->batch = UPDATE_CLASSID_BATCH;
return n + 1;
- } return 0;
}
We take "const void *" and then write to it. That's asking for trouble... right? Should the const annotation be removed, at least for sake of humans trying to understand the code?
Best regards, Pavel