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