printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
" = -1 EBADF (%m)\n");
+ (void) ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), (kernel_ulong_t) -1ULL);
+ printf("ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), %#lx)"
+ " = -1 EBADF (%m)\n", -1UL);
+
(void) ioctl(-1, _IOR(0xde, 0xad, data), &data);
printf("ioctl(-1, _IOC(_IOC_READ, 0xde, 0xad, 0x8), %p)"
" = -1 EBADF (%m)\n", &data);
# include <stddef.h>
# include <string.h>
# include <sys/ioctl.h>
+# include <linux/ioctl.h>
# include <linux/dm-ioctl.h>
# ifndef VERBOSE
int
main(void)
{
+ static kernel_ulong_t dummy_dm_ioctl1 =
+ _IOC(_IOC_READ, DM_IOCTL, 0, 0x1fff);
+ static kernel_ulong_t dummy_dm_ioctl2 =
+ _IOC(_IOC_READ|_IOC_WRITE, DM_IOCTL, 0xed, 0);
+ static kernel_ulong_t dummy_dm_arg =
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
/* We can't check these properly for now */
static struct args dummy_check_cmds_nodev[] = {
{ ARG_STR(DM_REMOVE_ALL), false },
"-1 EBADF (%m)\n",
DM_IOCTL, sizeof(int), dm_arg);
+ ioctl(-1, dummy_dm_ioctl1, 0);
+ printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0, %#x), 0) = -1 EBADF (%m)\n",
+ DM_IOCTL, (unsigned int) _IOC_SIZE(dummy_dm_ioctl1));
+
+ ioctl(-1, dummy_dm_ioctl2, dummy_dm_arg);
+ printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, %#x, %#x, 0), %#lx) = "
+ "-1 EBADF (%m)\n",
+ DM_IOCTL, (unsigned int) _IOC_NR(dummy_dm_ioctl2),
+ (unsigned long) dummy_dm_arg);
+
/* DM_VERSION */
/* Incorrect pointer */
printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
"_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)", lmagic);
+ ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0), lmagic);
+ printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
+ "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)", lmagic);
+
puts("+++ exited with 0 +++");
return 0;
}