On Thu, Jun 11, 2015 at 03:34:14PM +0200, Patrik Jakobsson wrote: > On Thu, Jun 11, 2015 at 02:27:12AM +0300, Dmitry V. Levin wrote: > > On Wed, Jun 10, 2015 at 02:45:24PM +0200, Patrik Jakobsson wrote: > > > On Wed, Jun 10, 2015 at 01:35:35AM +0300, Dmitry V. Levin wrote: > > > > On Tue, Jun 09, 2015 at 01:26:43PM +0200, Patrik Jakobsson wrote: > > [...] > > > > > +static int i915_setparam(struct tcb *tcp, const unsigned int code, long arg) > > > > > +{ > > > > > + struct drm_i915_setparam param; > > > > > + > > > > > + if (exiting(tcp) || umove(tcp, arg, ¶m)) > > > > > + return 0; > > > > > > > > In this and other ioctl printers that unconditionally return 0 on exit, > > > > wouldn't the caller treat it as an ioctl that hasn't been printed? > > > > > > Yes, seems like the exiting phase should return 1 if already handled in the > > > entering phase. But changing it produces the same output for some reason. Not > > > sure what's going on here. > > > > Isn't tcp->u_arg[2] printed twice, the first time decoded, > > and the second time in hex? > > My mistake, it does print u_arg[2] in hex as well. Luckily they could all be > moved to the exiting phase instead. Fixed in v2. The common rule is to decode as early as possible, consequently, all syscall arguments that could be decoded on entering syscall should be decoded on entering rather than on exiting. All syscall arguments of _IOW ioctl commands could be fully decoded on entering syscall. -- ldv
Attachment:
pgpJImtFtVQPM.pgp
Description: PGP signature
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx