Fix 9ns FD access
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 9 Sep 2015 17:11:51 +0000 (13:11 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
commit6318eacd027d48703fb169996cc480eba98e7cd3
tree3db88466c3f94914f226b3bb3700d01e3a8eb40e
parentb56a65e2cbb05d19c8863e564e4510f8551b414d
Fix 9ns FD access

fdtochan takes the access mode, or -1 to mean "not being used for user
access, just give me the chan".  We were doing a few weird things here
that may have been wrong.

The biggest thing was the O_TRUNC business.  We had a check that was
essentially making sure the device cleared O_TRUNC in its open call.  It
makes more sense to do that right after the open, if at all.  Also, I
don't see how fdtochan would ever get called with O_TRUNC, legitimately.
(Note that -1 sets all flags, so don't check too early!).  As it is now,
the current check will work if for some reason we have an O_TRUNC in
fdtochan's mode parameter, or anything other than what the chan really
supports.

I also dropped the == O_RDWR shortcut, as that has assumptions baked in
to it that O_RDWR means "everything".  This might break some
applications, though in that case maybe the apps or other parts of the
kernel were doing something wrong.
kern/src/ns/chan.c
kern/src/ns/sysfile.c