Commit graph

1713 commits

Author SHA1 Message Date
cinap_lenrek 0a3eb7d6b1 rio: copy window labels for menu3
as the menu is displayed, the window might go away or change its
label causing menuhit() to dereference bad memory. just strdup()
the labels before passing to menu3str to prevent accidents.
2012-10-18 18:51:32 +02:00
cinap_lenrek 3730a4df53 document urlencode in hget(1) 2012-10-18 15:23:40 +02:00
cinap_lenrek 7c3ea4360b hpost: add -l flag to get location url after POST 2012-10-18 14:38:07 +02:00
cinap_lenrek 909efb22c5 /sys/src/cmd/auth/mkfile: fix lib.$O.a race 2012-10-18 03:49:40 +02:00
cinap_lenrek 1ee5cd7425 kernel: mnt cache rework
avoid double entries in the cache for copen() and properly handle
locking so we wont just give up if we cant lock the Mntcache entry,
but drop the cache lock, qlock the Mntcache entry, and then recheck
the cache.

general cleanup (cdev -> ccache, use eqchantdqid())
2012-10-17 15:48:30 +02:00
stanley lieber e51845797b fortunes, rob, rsc, troll: the war is over 2012-10-16 11:21:21 -05:00
cinap_lenrek fcacce0f2f kernel: duppage cleanup
remove the sched() call and retry loop from duppage() and just
drop the page lock, then reacquire it after lock(&palloc).
2012-10-16 16:10:26 +02:00
cinap_lenrek 45b99937be kernel: cachedel() lock order, lookpage, cleanup
the lock order of page.Lock -> palloc.hashlock was
violated in cachedel() which is called from the
pager. change the code to do it in the right oder
to prevent deadlock.

change lookpage to retry on false hit. i assume that
a false hit means:

a) we'r low on memory -> cached page got uncached/reused

b) duppage() got called on the page, meaning theres another
cached copy in the image now.

paging in is expensive compared to the hashtable lookup, so
i think retrying is better.

cleanup fixfault, adding comments.
2012-10-16 14:12:21 +02:00
cinap_lenrek 1335be8276 swap: track swap pages with > 255 references, setswapchan() swapimage.c
swaped pages use a 8bit refcount where as the Page uses a 16bit one.
this might be exploited with having a process having a single page
swaped out and then forking 255 times to make the swap map refcount
overflow and panic the kernel.

this condition is probably very rare. so instead of doubling the
size of the swap map, we add a single 32bit refcount swapalloc.xref
which will keep the combined refcount of all swap map entries who
exceeded 255 references.

zero swapimage.c in setswapchan() after closing it as the stat() call
below might error leaving a dangeling pointer.
2012-10-15 14:04:30 +02:00
cinap_lenrek 2f732e9a85 kernel: attachimage / exec error handling
attachimage()'s approach to handling newseg() error is flawed:

a) the the image is on the hash table, but ref is still 0, and
there is no segment/pages attached to it so nobody is going to
reclaim / putimage() it -> leak

b) calling pexit() would deadlock us because exec has acquired
up->seglock when calling attachimage(), so this would just deadlock.

the fix does the following:

attachimage() will putimage() and nexterror() if newseg() fails
instead of pexit(). this is less surprising.

exec now keeps the condition variable commit which is set once
we are commited / reached the point of no return and check this
variable in the highest waserror() handler and pexit() us there.

this way we have released up all the locks and pexit() will
cleanup.

note: this bug shouldnt us hit in with the current newseg()
implementation as it uses smalloc() which would wait to
satisfy the allocation instead of erroring.
2012-10-14 19:48:46 +02:00
cinap_lenrek fef6ff96ad update fshalt(8) manpage 2012-10-14 13:33:10 +02:00
cinap_lenrek 143fcc0a42 formpost becomes hpost 2012-10-14 06:28:58 +02:00
cinap_lenrek 45c0c41280 urlencode: fix /fd/0 use 2012-10-13 15:35:39 +02:00
stanley lieber 324ab59b08 ircrc(1): man page fixes, thanks pap 2012-10-12 09:17:47 -05:00
stanley lieber 2f83fa7f74 hget(1): fix man page errors, add another example 2012-10-11 22:06:11 -05:00
stanley lieber b786ff0544 add /rc/bin/formpost; add formpost to hget(1) man page 2012-10-11 16:37:48 -05:00
cinap_lenrek 5cddd21627 cifsd: fix 64bit fileoffset bug
the low 32bit word got *sign-extended* on vlong conversion. m(
2012-10-11 21:38:54 +02:00
stanley lieber 05a0570970 ircrc(1): fix error 2012-10-11 11:34:15 -05:00
stanley lieber 1ef8bffd3c add /sys/man/1/ircrc, thanks pap 2012-10-11 11:31:40 -05:00
cinap_lenrek 16d61d3c97 kernel: try to catch some (rare) mistakes
kstrcpy() did not null terminate for < 4 byte buffers. fixed,
but i dont think there is any case where this can happen in
practice.

always set malloctag in kstrdup(), cleanup.

always use ERRMAX bounded kstrcpy() to set up->errstr, q->err
and note[]->msg. paranoia.

instead of silently truncating interface name in netifinit(),
panic the kernel if interface name is too long as this case
is clearly a mistake.

panic kernel when filename is too long for addbootfile() in
devroot. this might happen if your kernel configuration is
messed up.
2012-10-11 17:29:16 +02:00
cinap_lenrek d9394b0d87 6in4: fix exit status, less strict src filtering, logging (import from sources) 2012-10-11 13:21:30 +02:00
cinap_lenrek 73e7e47d5b kenrel: simplify image cache by use of ccloseq() 2012-10-10 08:22:35 +02:00
cinap_lenrek ca9f286b6c vncv: cleanup 2012-10-09 16:22:19 +02:00
cinap_lenrek 6f2ea28817 vncv: fork tcs with RFNOWAIT as we dont collect wait message 2012-10-09 15:26:45 +02:00
cinap_lenrek 3cc39a0ac7 vncv: snarfvers race, silly walks, add -l option for clipboard charset 2012-10-09 15:15:57 +02:00
cinap_lenrek 14817c4991 /sys/lib/acid/kernel: fix imagecache() and procenv() 2012-10-09 03:52:18 +02:00
cinap_lenrek e52677328b merge 2012-10-09 03:23:21 +02:00
cinap_lenrek eb13b7debc /sys/lib/acid/kernel: needacid("chan") 2012-10-09 03:22:28 +02:00
aiju 4048ceedd6 fortunes 2012-10-08 22:14:19 +02:00
stanley lieber 8b24e40e29 netaudit(8): english 2012-10-07 22:06:47 -05:00
cinap_lenrek df66638fb5 netaudit changes and manual page 2012-10-08 00:56:00 +02:00
stanley lieber e598b6dd31 hjfs(8): fix wording 2012-10-07 15:09:04 -05:00
stanley lieber 104c0eaf29 fortunes, rsc, rob: more 2012-10-07 14:40:29 -05:00
stanley lieber c2881f43fb add /sys/man/8/hjfs 2012-10-07 14:39:45 -05:00
cinap_lenrek 54c5131529 /sys/lib/acid/kernel: fix intrcount() 2012-10-07 08:03:02 +02:00
stanley lieber 3049e7036b hjfs(4): fly your flag 2012-10-06 12:27:40 -05:00
stanley lieber f80ac5dd42 fortunes, rob, rsc, theo, troll: updates 2012-10-06 11:56:56 -05:00
cinap_lenrek 83ffc3a1da pc kernel: make imagemem maxsize 10% less of mainmem maxsize 2012-10-06 07:05:08 +02:00
stanley lieber 349abfcd79 add /sys/man/4/hjfs 2012-10-06 03:49:53 +00:00
cinap_lenrek 16a9d6bbd3 tftpfs(4) example typo 2012-10-06 05:14:46 +02:00
cinap_lenrek bac191c407 httpfile(4) section name quoting 2012-10-06 05:13:14 +02:00
cinap_lenrek d21df97764 paint(1) fix bad cross reference 2012-10-06 05:12:07 +02:00
stanley lieber c23d478a25 tftpfs(4): minor corrections 2012-10-05 21:25:55 -05:00
cinap_lenrek 61d1967e74 tftpfs: add manpage, add -x option 2012-10-06 04:14:48 +02:00
cinap_lenrek 5baafe7307 libfis: do not lie about logical sector units 2012-10-06 22:56:05 +02:00
cinap_lenrek 4cfd5cb02e urlencode: encode null bytes 2012-10-05 23:38:43 +02:00
cinap_lenrek 310afb88ef urlencode: fix null byte hexdigit() bug 2012-10-05 23:30:05 +02:00
cinap_lenrek 9ac9a135c8 urlencode: decode + as space 2012-10-05 23:21:17 +02:00
cinap_lenrek 4af5408953 replace urlencode with c version that isnt broken for utf-8 2012-10-05 23:14:23 +02:00
aiju 56df14a6a3 fixed ream code; added megabyte output to df 2012-10-03 18:27:22 +02:00