On Thursday 30 October 2014 10:23:31 Xiong Zhou wrote: > From: Xiong Zhou <jencce.ker...@gmail.com> > > struct logger_entry can be returned to userspace via ioctl, > so it is wrong to have a kuid_t member, fixing it to uid_t. > This was introduced by commit bd471258f2, to pass uidguid > type checks : UIDGID_STRICT_TYPE_CHECKS, which has been > removed from kernel in commit 261000a56b6. > > Fixes: bd471258f2 (logger: use kuid_t instead of uid_t) > Signed-off-by: Xiong Zhou <jencce.ker...@gmail.com>
Sorry, but this isn't good. You had an earlier patch that introduced a bug by hiding a warning, and now you send a new patch to hide the bug better instead of fixing it? > diff --git a/drivers/staging/android/logger.c > b/drivers/staging/android/logger.c > index 28b93d3..fb06bf2 100644 > --- a/drivers/staging/android/logger.c > +++ b/drivers/staging/android/logger.c > @@ -252,7 +252,7 @@ static size_t get_next_entry_by_uid(struct logger_log > *log, > > entry = get_entry_header(log, off, &scratch); > > - if (uid_eq(entry->euid, euid)) > + if (entry->euid == __kuid_val(euid)) > return off; > > next_len = sizeof(struct logger_entry) + entry->len; The code above was correct, you are just breaking it more. > @@ -430,7 +430,7 @@ static ssize_t logger_write_iter(struct kiocb *iocb, > struct iov_iter *from) > header.tid = current->pid; > header.sec = now.tv_sec; > header.nsec = now.tv_nsec; > - header.euid = current_euid(); > + header.euid = __kuid_val(current_euid()); > header.len = count; > header.hdr_size = sizeof(struct logger_entry); > This writes to the internal data structure, so here you should still use kuid_t. The problem is that you are later leaking this to user space, so a user in one container can read entries from a user with the same uid in another container, and that a process calling read() with the r_all bit set will get entries with uids from all containers, using the kernel-internal uid values instead of the ones valid for the current container. Arnd _______________________________________________ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel