[PATCH] Async I/O should indicate failure.

Rusty Russell (rusty@linuxcare.com.au)
Tue, 21 Dec 1999 14:45:17 +1100


I'm told Solaris and HP/UX don't allow FIOASYNC on unsupported
devices. I assume ENOTTY is correct here; I don't have a spec.

Also, if the fasync strategy fails (eg. ENOMEM from a tty), the flag
gets set, and the user remains unaware of failure.

A similar (identical?) patch for 2.2 is required.

Rusty.
--- linux-2.3/fs/ioctl.c.~1~ Tue Nov 30 17:57:44 1999
+++ linux-2.3/fs/ioctl.c Tue Dec 21 14:10:54 1999
@@ -91,8 +91,12 @@
/* Did FASYNC state change ? */
if ((flag ^ filp->f_flags) & FASYNC) {
if (filp->f_op && filp->f_op->fasync)
- filp->f_op->fasync(fd, filp, on);
+ error = filp->f_op->fasync(fd, filp, on);
+ else error = -ENOTTY;
}
+ if (error != 0)
+ break;
+
if (on)
filp->f_flags |= FASYNC;
else

--
Hacking time.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/