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 -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Attachment:
signature.asc
Description: PGP signature