Commit graph

1766 commits

Author SHA1 Message Date
cinap_lenrek c33732a530 rio: wtop() after resize fix
wtop() checked w->topped == topped as a fast exit. if you
had the top most window not being current (== input) which
can happen when you delete the current window, then wtop would
after resize would not make the window current because it
is already top topmost one. wtopme() and wcurrent() both are
non-ops when window is already the topmost or window is already
current, so remove the check as its not needed. also topping
the window feels less sluggish.
2012-10-20 10:38:11 +02:00
cinap_lenrek 624c9f5112 rio: preserve window z-order on resize, fix race conditions
sort the window array by w->topped before reshaping all
windows. this preserves the window z-order.

remove implicit focus change on reshape/move. it called
wcurrent() in wtcl thread which might send a wctl message
to itself, bad... also we might not want to change focus
on reshape, like for the rio resize. so we set the input
window explicitely in all call sites.

window deletion was racy. wclosewin() destroys w->i, but
it is called outside the wctl thread so it might just
free the image under libframe doing some text selection.
this is fixed the following: add wclunk() function,
which basically just marks the window as deleted and
removes the reference from the window[] and hidden[]
arrays. (called on wclose() when refcount drops to
zero). wclosewin() now just frees the image and is only
called from the wctl thread on exit or when handing
the Deleted message.

get a reference to the window when doing sweeping or
moving as the filesystem might just clunk it under
us and we might end up sending wctl messages to
a Exited window.

wctl resize message has to fail if the window is not
current as it might be hidden... would also be annoying.
2012-10-20 22:42:01 +02:00
cinap_lenrek 558b9558d4 more generic way to deal with image chan conversion for resize/resample/rotate
this is to catch crazy color channels like k8a8 and the 15/16 bit
ones and CMAP. basically, just convert to RGBA32 or RGB24 depending
on if it has an alpha channel.
2012-10-18 20:17:12 +02:00
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
cinap_lenrek aeb41b90f6 merge 2012-10-03 18:19:17 +02:00
cinap_lenrek 8840830ab8 liblex: fix allprint() definition (from sources) 2012-10-03 18:18:01 +02:00
aiju 0ebd85f72c hjfs: debug-chdeind and sync commands added 2012-10-03 18:10:56 +02:00
cinap_lenrek 76c102e548 apply sources patch cc-cpp-c99-comm
When running "?c -p ...", ensure the backend cpp recognizes C++ comments.

2c(1) states that the compilers recognize // comments, and the bare compilers
do.  But if you invoke the compiler with '-p', the backend cpp process
doesn't handle // comments properly unless you also give ?c the undocumented
'-+' option (which it passes through to cpp).
2012-10-03 18:09:53 +02:00
aiju 87b66bade2 fixed debug-getblk 2012-10-03 18:01:23 +02:00
aiju 20f8378ea1 hjfs debug commands 2012-10-03 17:45:58 +02:00
aiju 2bcaa6be7e fixed potential bug in hjfs 2012-10-03 17:23:17 +02:00
cinap_lenrek 549b4e0225 upas/marshal: fix usage line and add missing flags to manpage 2012-10-02 00:37:17 +02:00
cinap_lenrek 9e7ecc41d5 devproc buffer overflow, strncpy
in devproc status read handler the p->status, p->text and p->user
could overflow the local statbuf buffer as they where copied into
it with code like: memmove(statbuf+someoff, p->text, strlen(p->text)).
now using readstr() which will truncate if the string is too long.

make strncpy() usage consistent, make sure results are always null
terminated.
2012-10-01 02:52:05 +02:00
cinap_lenrek 347ac6ef58 guesscpuhz(), apm suspend
use fastclock timer (pit2) to measure cpufreq in guesscpuhz(). this
gives a bigger period minimizing the danger of overrun as pit2 runs
at the constant maximum period of 0x10000 ticks. also use smaller
loop increments (1000) and bigger maximum loop upper bound.

move the loops < ... check to the bottom of the loop so we get the
effective count *before* adding the next loop increment.

ilock() while doing measurements in guesscpuhz() to prevent accidents
with other processors reading fastclock or doing guesscpuhz()
in parralel.

export new i8253reset() function for apm to reset the timers after
a apm bios suspend.
2012-09-30 19:41:34 +02:00
cinap_lenrek 2204bb7321 ether82557: timeout for ifstats DumpSC command 2012-09-30 16:16:20 +02:00
cinap_lenrek 5d64e428eb fix devproc and killbig segment race
we have to acquire p->seglock before we lock the individual
segments of the process and lock them. if we dont then pexit()
might free the segments before we can lock them causing the
"qunlock called with qlock not held, from ..." prints.
2012-09-30 16:14:27 +02:00
stanley lieber fa08484d47 cpuid(8): fix spelling 2012-09-28 21:49:12 -05:00
cinap_lenrek cd9ac26eb7 cpuid(8) manpage improments 2012-09-29 04:12:42 +02:00
cinap_lenrek 934442ace2 cpuid(8) manpage 2012-09-29 03:57:59 +02:00
cinap_lenrek 67f3dbdaee mothra: fix select boxes in textview 2012-09-28 01:53:14 +02:00
aiju 7a91a85509 fixed hjfs df 2012-09-27 17:08:52 +02:00
aiju 9cec2db619 really renamed statw to df 2012-09-27 16:26:47 +02:00
aiju 38e993c731 renamed statw to df 2012-09-27 16:26:28 +02:00
aiju 196f605e83 trivial mistake 2012-09-27 15:10:03 +02:00
aiju 45f76d6191 hjfs: statw command 2012-09-27 15:06:42 +02:00
stanley lieber 72061412ce fortunes, rob, rsc: updates 2012-09-26 18:52:49 -05:00
cinap_lenrek 37e8a817ea mothra: fix url snarfing 2012-09-26 19:32:34 +02:00
cinap_lenrek 5961379aba mothra: display url is page list if no title is available 2012-09-26 19:21:04 +02:00
cinap_lenrek 8035bb7dd1 mothra: never snarf the "Go:" box 2012-09-26 19:00:50 +02:00
cinap_lenrek 2b7330765a mothra: dont make all images into links (only in mothmode) 2012-09-26 18:28:10 +02:00
cinap_lenrek 03f2668d68 libdraw: enter()/eenter() ^W support - we are getting there 2012-09-26 17:35:21 +02:00
cinap_lenrek d3f93ee1f3 need more coffee 2012-09-26 15:54:25 +02:00
cinap_lenrek aa3dd7fd8f libdraw: fix ^W corner case tick == 0 for enter()/eenter() 2012-09-26 15:48:57 +02:00
cinap_lenrek a77f6553d8 libdraw: implement ^W word delete for enter() and eenter() 2012-09-26 15:31:09 +02:00
cinap_lenrek 01e3e719ed mothra: various improvements
* disallow snarf on password entries
* remove current title label as it is displayed in the page list (redundant)
* avoid redrawing page list just to update the title
* check if the chan changed for backup bitmap in pl_rtdraw()
2012-09-24 01:08:09 +02:00
cinap_lenrek a8a71a36f5 mothra: cache backup bitmap in pl_rtdraw() 2012-09-24 23:32:57 +02:00
cinap_lenrek 8007596779 mothra: forgot to add snarf.c 2012-09-24 22:50:44 +02:00
cinap_lenrek 948d0a1180 mothra: snarf and paste 2012-09-23 20:14:47 +02:00
cinap_lenrek f68d096fb7 mothra: dont highlight subpanels in textview 2012-09-23 12:11:21 +02:00
cinap_lenrek da8dd94a7a mothra: fast (offscreen) alpha drawing on scroll 2012-09-23 04:18:39 +02:00
cinap_lenrek 74cdf2c10a mothra: cleanup textview code 2012-09-23 03:48:29 +02:00
cinap_lenrek bd998b2a78 mothra: text selection 2nd attempt 2012-09-22 19:54:33 +02:00
cinap_lenrek f34ef5a8d4 mothra: first attempt on text selection 2012-09-22 17:46:56 +02:00
cinap_lenrek 9a06f93b71 tftp: prevent it from hanging if ack packets get lost
send ACK reply for duplicate data packets in case our ack response
got lost. make sure packets are in sequence and ignore out of
oder packets (except the ones we'v already acked).
2012-09-20 09:33:40 +02:00
google 9d182f906d Add disk/smart to mkfile 2012-09-20 10:42:17 +12:00
Marko Kostić d5be0c1853 user: Marko Kostić <marko.m.kostic@gmail.com>
branch 'default'
added sys/lib/kbmap/sr (serbian cyrillic kbmap)
added sys/lib/kbmap/sr@latin (serbian latin kbmap)
2012-09-19 23:37:47 +02:00
google 2c4947656f Add manpages for atazz and smart 2012-09-20 22:51:20 +12:00
google 2a9d702506 Add Erik Quanstrom's smart tool for ATA SMART. 2012-09-20 22:42:06 +12:00
google fa7fb8b66b Add Erik Quanstrom's atazz
(needed to disable power management/head unload on 2.5" drive)
2012-09-20 22:39:48 +12:00
cinap_lenrek 913afc39c9 tftpd: apply sstallion's tftpd-rfc patch (from sources)
tftpd option handling is not RFC-compliant. This causes picky
clients (such as curl) to fail transfers.
2012-09-18 18:27:59 +02:00
cinap_lenrek a5756259cf 5l -H7 (elf) support (import from sources) 2012-09-18 18:22:38 +02:00