Hi!
From: Dmitry Yakunin <zeil@xxxxxxxxxxxxxx>...
[ 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