Commit graph

3094 commits

Author SHA1 Message Date
cinap_lenrek 482694b72a webfs: implement CONNECT method for https connections over proxy
when using a http proxy, establish secure tls connection to the
other end with the CONNECT method so the proxy.
2015-03-09 20:26:20 +01:00
cinap_lenrek b69556052e gs: fix bug 694539. Reading off the end of the cbuf when dash pattern len is max 2015-03-08 05:27:24 +01:00
cinap_lenrek fcc336b902 kernel: catch address overflow in syssegfree()
the "to" address can overflow in syssegfree() causing wrong
number of pages to be passed to mfreeseg(). with the current
implementation of mfreeseg() however, this doesnt cause any
data corruption but was just freeing an unexpected number of
pages.

this change checks for this condition in syssegfree() and
errors out instead. also mfreeseg() was changed to take
ulong argument for number of pages instead of int to keep
it consistent with other routines that work with page counts.
2015-03-07 18:59:06 +01:00
cinap_lenrek 0c705580ab snap: fix readseg() to cope with > 2gb segments 2015-03-07 15:21:01 +01:00
cinap_lenrek dc6d81cc7e zynq: sdio support 2015-03-06 18:29:39 +01:00
cinap_lenrek 374d4ec2c1 devsd: always page align sd buffers
sdbio() tests if it can pass the buffer pointer directly to
the driver when it is already in kernel memory. we also need
to check if the buffer is properly aligned but alignment
requirement is handled in system specific sdmalloc() and
was not known to devsd.

to solve this, we *always* page align sd buffers and get rid
of the system specific sdmalloc() macro (was only used in bcm
kernel).
2015-03-06 16:16:45 +01:00
cinap_lenrek fadbb92afa zynq: do mpinit() early so cpu1 debug prints do not intermix 2015-03-06 14:31:51 +01:00
cinap_lenrek 3cd7978a72 zynq: fix usb by implementing delay() and give proper port speed in portstatus 2015-03-05 23:48:23 +01:00
cinap_lenrek 07c7fa6716 libthread: get rid of chaninit() (thanks qrstuv)
chaninit() does not initialize Chan.qentry and Chan.nentry
and there is no way to get rid of such a channel. nobody is
using it, so removing the function to avoid confusion.
2015-03-04 10:20:31 +01:00
cinap_lenrek eaf91d0f8e kernel: fix physical segment handling
ignore physical segments in mcountseg() and mfreeseg(). physical
segments are not backed by user pages, and doing putpage() on
physical segment pages in mfreeseg() is an error.

do now allow physical segemnts to be resized. the segment size
is only checked in segattach() to be within the physical segment!

ignore physical segments in portcountpagerefs() as pagenumber()
does not work on the malloced page structures of a physical segment.

get rid of Physseg.pgalloc() and Physseg.pgfree() indirection as
this was never used and if theres a need to do more efficient
allocation, it should be done in a portable way.
2015-03-03 13:08:29 +01:00
cinap_lenrek 2259f3fb9a libdraw: font->display->defaultsubfont vs. display->defaultsubfont, dead code, malloc erros
it is possible to have fonts belong to different or no display, so the
check for defaultsubfont has to be against font->display, not the global
display variable.

remove unused freeup() routine.

handle strdup() error in allocsubfont() and realloc() error in buildfont().
2015-03-02 11:01:12 +01:00
cinap_lenrek fc1ff7705b devmnt: remove unused mntstats fields from Mntrpc 2015-03-01 18:56:45 +01:00
cinap_lenrek 3f869a6894 factotum: cleanup getnvramkey()
- remove secstore password code, it is not used anymore.
- zero the Nvrsafe structure on the stack before returning.
- use smprint(), can't overflow.
2015-03-01 11:17:21 +01:00
cinap_lenrek 0467b41972 libdraw: use multiple read() calls in openfont() to read .font file
font files might be bigger than the i/o unit, so do multiple reads
until eof to read it.
2015-03-01 05:45:22 +01:00
cinap_lenrek e725771b5d libdraw: use readn() to read headers and Fontchar array
the Fontchar array might be bigger than the i/o unit,
so we have to use readn() to properly read it.
2015-03-01 05:39:45 +01:00
cinap_lenrek 7cdc13accc 6c: fix missing memset in Bconv() 2015-03-01 05:33:41 +01:00
cinap_lenrek 95565d289e libthread: remove unused internal functions and old xinc assembler files 2015-02-28 13:26:38 +01:00
cinap_lenrek 45d1d31847 libthread: use devdup instead of mounting pipe to /mnt/temp for close-on-exec in procexec()
the namespace might be shared by other processes. instead, we
create a anonymous pipe with pipe() and use devdup to open one
end close-on-exec. this is shorter and avoids the race condition.

do not touch Execargs after writing the error message as the
process might be gone after the write. this was to manually
close the fd which isnt neccesary as the kernel will do it
for us on the following exit.
2015-02-28 12:50:17 +01:00
cinap_lenrek 098884981d pool: maintain Pool.curalloc for poolallocalign() and blockgrow()
blockgrow() and poolallocalign() change the size of
allocated blocks which needs to be accounted for
in Pool.curalloc.
2015-02-26 22:22:07 +01:00
cinap_lenrek 5866bd5ada aux/vga: dont error when vesa setscale fails after modeset (thanks rx9p for reporting) 2015-02-26 00:54:23 +01:00
cinap_lenrek 1e14429f47 kbdfs: work arround qemu
qemu does not send e0 escape for gray (arrow) keys, no matter
the numlock state. as a work arround, we assume gray key when
numlock is not active.
2015-02-24 14:21:47 +01:00
cinap_lenrek 4235556c16 libdraw: check fontchar count in openmemsubfont() and readsubfont() 2015-02-24 03:30:21 +01:00
cinap_lenrek 5f8cacd2de libdraw: cleanup getsubfont() 2015-02-24 03:25:26 +01:00
cinap_lenrek cc77058aea webfs: check $httpproxy and error when its bogus
the httpproxy environment variable needs to be a url as stated
in the manpage, so give an error when it isnt.
2015-02-23 07:27:19 +01:00
cinap_lenrek d7a4fdee99 jpg: handle progressive non-interleaved mode 2015-02-23 01:20:42 +01:00
cinap_lenrek ccb624e2bb gs: backport 16MB string support 2015-02-21 10:55:09 +01:00
cinap_lenrek 6f1787adcb devusb: check for nil hp->dump and hp->seprintep 2015-02-20 18:56:22 +01:00
cinap_lenrek c6069e28ac pc, pc64: simplify intrdisable() 2015-02-20 18:43:32 +01:00
cinap_lenrek 173bafd800 devusb: fix debug ctl nil crash 2015-02-20 18:42:24 +01:00
cinap_lenrek 0b016a77e4 gs: backport aes support for pdf-1.6 2015-02-20 00:21:45 +01:00
cinap_lenrek 581f3852fe pc, pc64: fix intrdisable() MaxIrqLAPIC -> MaxVectorAPIC (thanks mischief) 2015-02-18 06:30:01 +01:00
cinap_lenrek 0037c93433 6c: eleminate more MOV instructions
convert:

x = B || W
MOVxLZX a, r; MOVxQZX r, b -> MOVxQZX a, r; MOVQ r, b
MOVxLSX a, r; MOVxQSX r, r -> MOVxQSX a, r; MOVQ r, r

the MOVQ can then be eleminated by copy propagation.

improve subprop() by accepting other mov and lea
instructions as the source op.
2015-02-18 23:34:33 +01:00
cinap_lenrek 8210f857f1 6l: no need to emit rex.w prefix for MOVBQZX and MOVWQZX
as with 32 bit operand size, the upper bits 63:32 are
automatically zeroed in 64bit mode. this gives a shoter
instruction encoding.
2015-02-17 22:25:55 +01:00
cinap_lenrek eec5799f4c nusb/usbd: fix typo in debug prints, dont use %U format as its not installed 2015-02-17 22:17:30 +01:00
cinap_lenrek 5c84044f51 vc: eleminate strcpy in multab code 2015-02-17 22:16:02 +01:00
cinap_lenrek 03feba8cc1 [125678kqv][cl]: fix sprint() and strcpy() buffer overflows 2015-02-17 22:13:35 +01:00
cinap_lenrek fdeea811b7 tlssrv: produce meaningfull error message when unable to read certificate 2015-02-17 07:05:54 +01:00
cinap_lenrek ebeb158a08 tlssrv: fix usage, dont cat 2015-02-17 06:59:55 +01:00
cinap_lenrek a55c2b2b81 tlssrv: fix this mess (thanks burnzez for reporting the issue)
tlsServer() closes the passed in fd, in our case fd=1 leaving it
with no std output which got occupied by pipe() filedescriptor
which it then closed after duping... a classic.

delete all this mess. theres no reason to fork() and copy traffic
on a pipe at all as tlsServer() gives us a perfectly valid filedescriptor.
just dup() and exec() and we'r done.
2015-02-17 06:54:19 +01:00
cinap_lenrek d99a4ed1b8 wc: flags dont need to be uvlong 2015-02-15 06:26:49 +01:00
cinap_lenrek 94d3d64c88 wc: bring back old wc but extended for 21 bit runes
the imported wc from sources is arround 8 times slower
than our old one. it is common to run wc on large log files
to count lines. so i think the implementation complexity
is justified. (just like with grep)
2015-02-15 06:22:19 +01:00
cinap_lenrek b06a35ba56 wc: import new wc from sources 2015-02-14 16:20:40 +01:00
cinap_lenrek 995379e388 usbehci: initial support for usb on zynq, remove uncached.h
the following hooks have been added to the ehci Ctlr
structore to handle cache coherency (on arm):

	void*	(*tdalloc)(ulong,int,ulong);
	void*	(*dmaalloc)(ulong);
	void	(*dmafree)(void*);
	void	(*dmaflush)(int,void*,ulong);

tdalloc() is used to allocate descriptors and the periodic
frame schedule array. on arm, this needs to return uncached
memory. tdalloc()ed memory is never freed.

dmaalloc()/dmafree() is used for io buffers. this can return
cached memory when when hardware maintains cache coherency (pc)
or dmaflush() is provided to flush/invalidate the cache (zynq),
otherwise needs to return uncached memory.

dmaflush() is used to flush/invalidate the cache. the first
argument tells us if we need to flush (non zero) or
invalidate (zero).

uncached.h is gone now. this change makes the handling explicit.
2015-02-14 03:00:31 +01:00
cinap_lenrek 6b2d1f0186 zynq: do fixed mapping for ocm memory on boot and make kaddr() and paddr() work with it
map the whole ocm memory on boot so we can translate physical to
virtual addresses and back for uncached memory using KADDR() and
PADDR().

replace ualloc() with ucalloc() returning virtual address. physical
address can be acquired with PADDR() now.

as ocm is now always mapped, use KADDR() instead of tmpmap() for
mp bootstrap.
2015-02-14 02:44:19 +01:00
cinap_lenrek 92602d08d6 build and document auth/userpasswd 2015-02-12 18:18:34 +01:00
cinap_lenrek 8b57e59ea9 libc: check name in getvent()/putenv()
passing "", "." or ".." as name caused a crash in
getenv() as it would open the directory; then seek()
to determine the file size would fail and return -1.

now checking for these special names and set
error string when its bad.

doing a single read() will not work when /env has a
9p fileserver mounted onto it and the file size is bigger
than the i/o unit. so doing incremental reads until
we get eof.
2015-02-11 23:54:28 +01:00
cinap_lenrek 21570a4719 igfx: displayport support for ivy bridge 2015-02-09 19:17:04 +01:00
stanley lieber 20f2add592 mothra: add side scrolling, controlled by left and right buttons on the keyboard. if desired, x-scrollbar can be set visible via the visxbar variable in mothra.c. (thanks, jpm_) 2015-02-08 13:19:47 -05:00
stanley lieber b2c2d1ed2a vga/igfx: add 0x2a02 for GM965/GL960/X3100; comment vid/did with name of chipset 2015-02-07 01:12:46 -05:00
stanley lieber cab445eb62 pc64: enable uartisa in default config 2015-02-07 01:01:11 -05:00