ioctl no se llama si cmd = 2
Estoy desarrollando un módulo del kernel que usa unlocked_ioctl. Lo probé con el kernel versión 2.6.24-23-genérico y funciona perfectamente. Ahora lo probé con la versión del kernel 3.3.1-1-ARCH y algo extraño sucede: la función ioctl no se ejecuta cuando el valor de solicitud (cmd) es 2. Devuelve 0, pero la función no se ejecuta. Para comprobar que no está ejecutado hice lo siguiente:
<code>static long midriver_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { printk("Called with cmd = %d\n", cmd); </code>
Escribí un programa de prueba que llama a ioctl para este dispositivo de 0 a 4096, y puedo ver en dmesg el mensaje "Llamado con cmd = n" para todos esos valores, excepto "2", el único que no se muestra.
¿Alguna pista sobre lo que estoy haciendo mal?
Gracias de antemano,