Nice, I always hated these double-indented switch statements. > + case FIBMAP: > + { > + struct address_space *mapping = filp->f_mapping; > + int res; > + /* do we support this mess? */ > + if (!mapping->a_ops->bmap) > + return -EINVAL; > + if (!capable(CAP_SYS_RAWIO)) > + return -EPERM; > + error = get_user(block, p); > + if (error) > + return error; > + lock_kernel(); > + res = mapping->a_ops->bmap(mapping, block); > + unlock_kernel(); > + return put_user(res, p); While you're at it, it's probably worth splitting this out into a small helper function. > + case FIONBIO: > + error = get_user(on, (int __user *)arg); > + if (error) > + break; > + flag = O_NONBLOCK; > #ifdef __sparc__ > + /* SunOS compatibility item. */ > + if (O_NONBLOCK != O_NDELAY) > + flag |= O_NDELAY; > #endif > + if (on) > + filp->f_flags |= flag; > + else > + filp->f_flags &= ~flag; > + break; Same here. > + case FIOASYNC: > + error = get_user(on, (int __user *)arg); > + if (error) > break; > + flag = on ? FASYNC : 0; > + > + /* Did FASYNC state change ? */ > + if ((flag ^ filp->f_flags) & FASYNC) { > + if (filp->f_op && filp->f_op->fasync) { > + lock_kernel(); > + error = filp->f_op->fasync(fd, filp, on); > + unlock_kernel(); > + } else > error = -ENOTTY; > + } > + if (error != 0) > break; > + > + if (on) > + filp->f_flags |= FASYNC; > + else > + filp->f_flags &= ~FASYNC; > + break; And here. - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html