cinap_lenrek [Mon, 11 Mar 2013 00:16:34 +0000 (01:16 +0100)]
ape: fix thread race with close() and select()
in ape close(), do the real filedescriptor _CLOSE() *after* we cleared
the _fdinfo[] slot because once closed, we dont own the slot anymore and
another process doing open() can trash the slot. make sure open() retuns
fd < OPEN_MAX.
double check in _startbuf() holding mux->lock if the fd is already buffered
preveting running double copyprocs on a fd.
dont zero the mux->rwant/ewant bitmaps at the end of select() as we do not
hold the mix->lock.
in _closebuf() kill copyproc while holding the mux->lock to make sure the
copyproc isnt holding it at the time it is killed. run kill() multiple times
to make sure the proc is gone.
cinap_lenrek [Sun, 10 Mar 2013 23:48:35 +0000 (00:48 +0100)]
ape/stdio: make fopen() quasi threadsafe for python
python uses processes sharing memory. it requires at least fopen() to
be called by multiple threads at once so we introduce _IO_newfile()
which allocates the FILE structure slot under a lock.
cinap_lenrek [Sun, 10 Mar 2013 03:06:42 +0000 (04:06 +0100)]
nusb/disk: add small delay after unit start command (for thinkpad sdcard reader)
diskparts fails on thinkpad x200 sdcard reader if we dont
give the unit some time to startup. the device took about
100ms to become ready so status poll loop with a long
timeout would be overkill.
1. Go group spotted that a slightly-obscured pointer move was done by AMOVL not AMOVQ.
2. Inspecting the code further, I noticed that other pointer types were set to TLONG not TIND,
causing similar truncation of pointers to 32 bits.
cinap_lenrek [Thu, 28 Feb 2013 18:21:03 +0000 (19:21 +0100)]
ape: add PASS_MAX constant for getpass() to limits.h (from patch/ape-pass_max)
add PASS_MAX to limits.h for ape, and make getpass respect it. also increase the size of
the maximum passwords (we use long ones at work). Needed for native port of SVN (in progress).
cinap_lenrek [Thu, 21 Feb 2013 15:10:28 +0000 (16:10 +0100)]
netif: fix stat() on "stats" and "ifstats" files in network interface
the kernel would go into endless loop when stating "stats" and "ifstats"
files and the network interface having no connections, or otherwise return
wrong stat info.
cinap_lenrek [Sat, 16 Feb 2013 22:38:58 +0000 (23:38 +0100)]
boot(8): manpage correction $objtype vs. $cputype (from /n/sources/patch/boot-cputype-objtype)
boot(8) claims that boot will launch /$objtype/init;
that is incorrect. It launches /$cputype/init (so says
both boot.c and cpurc(8)). That's the more sensible
choice. This patch fixes the man page to resolve the
mismatch.
the channel= plan9.ini parameter isnt needed anymore as we now
hop the channels to scan for beacons. the status is also indicated
with the link led :-)
handle all these flags on packet transmission like RTS for big
packets and sending data packets to the AP instead of broadcasting
everything.
properly setup bss hardware node table and filtering. now promisc
mode is only used when requested.
Check the return of chdir(srv) to prevent exporting accidentally
the current working directory when the directory specified
with option -r doesn't exist.
Also fix at the same time the missing trailing \n in error
messages printed just before exits().
cinap_lenrek [Thu, 31 Jan 2013 21:51:21 +0000 (22:51 +0100)]
httpd: fix rane requests
we gave wrong content-length in range requests. r->stop - r->start
is wrong because r->stop is the byte offset of the *last* byte, not
the *next* byte after the last.
cinap_lenrek [Wed, 30 Jan 2013 19:33:28 +0000 (20:33 +0100)]
nusb/kb: increase maximum report descriptor size, non-continuous endpoints (from richard millars usbmouse-endpoint patch)
Another band-aid fix to the usb mouse driver, to cope with a mouse which has
an interrupt endpoint number 3 but no number 1 or 2, and a report descriptor
more than 128 bytes long.
cinap_lenrek [Wed, 30 Jan 2013 09:34:57 +0000 (10:34 +0100)]
lib9p: defer freeing srv for listensrv()
use the Srv.end callback for freeing the srv and closing the
file descriptor of a connection. this makes sure we wont free
the srv while there are still outstanding requests that would
access the srv when doing the respond() call.
cinap_lenrek [Wed, 30 Jan 2013 08:38:02 +0000 (09:38 +0100)]
hjfs: fix bogus nodata getbuf() of superblock in createroot() (failed ream race bug)
we used to do getbuf() with nodata flag so it only worked when
we where lucky and got the same in memory block back. this
is uncritical once you have reamed the filesystem, its just
that sometimes ream would fail with "ream successfull, then
hjfs: fsinit: file ./hjfs not found".