puzzle of ioctl decode in file_ioctl.c and userfaultfd.c

jingpiao chen chenjingpiao at gmail.com
Sun Dec 11 11:21:12 UTC 2016


Version:4.14-ab28d7f1e5ab9b51f5708741bd13f92e768123d4

1.file_ioctl.c:130

125 int
126 file_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
127 {
128         switch (code) {
129         case FICLONE:   /* W */
130                 tprintf(", %d", (int) arg);
131                 break;

Why print the pointer, not the pointer point to?
I think it should like sock.c: 230:

230#ifdef SIOCATMARK
231 case SIOCATMARK:
232#endif
233 if (entering(tcp))
234 return 0;
235 tprints(", ");
236 printnum_int(tcp, arg, "%d");
237 break;

2.userfaultfd.c:126

126         case UFFDIO_UNREGISTER:
127         case UFFDIO_WAKE: {
128                 struct uffdio_range ura;
129                 tprints(", ");
130                 if (!umove_or_printaddr(tcp, arg, &ura))
131                         tprintf_uffdio_range(&ura);
132                 return RVAL_DECODED | 1;
133         }

/usr/include/linux/userfaultfd.h:
51 #define UFFDIO_UNREGISTER       _IOR(UFFDIO, _UFFDIO_UNREGISTER,        \
52                                      struct uffdio_range)
53 #define UFFDIO_WAKE             _IOR(UFFDIO, _UFFDIO_WAKE,      \
54                                      struct uffdio_range)

UFFDIO_UNREGISTER and UFFDIO_WAKE are read data, why it get data
when entering.
I means it should replace by:

127         case UFFDIO_UNREGISTER:
128         case UFFDIO_WAKE: {
129                 if (entering(tcp))
130                         return 0;
131
132                 struct uffdio_range ura;
133                 tprints(", ");
134                 if (!umove_or_printaddr(tcp, arg, &ura))
135                         tprintf_uffdio_range(&ura);
136                 return RVAL_DECODED | 1;
137         }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20161211/a0219733/attachment.html>


More information about the Strace-devel mailing list