Commit graph

4261 commits

Author SHA1 Message Date
cinap_lenrek b48078c12c kernel: do not inherit current directory channel (dot) to pager
kproc() inherits dot and slash, pager needs to drop these
channels, otherwise it will keep the files open preventing
say, ramfs to exit.
2015-06-18 22:58:56 +02:00
cinap_lenrek 921aa0a6c3 stats: add kernel malloc and kernel draw allocation size graphs 2015-06-16 08:08:42 +02:00
cinap_lenrek 45b79036be devcons: add current pool allocations to #c/swap 2015-06-16 08:05:33 +02:00
cinap_lenrek 6c99d2f028 kernel: remove waserror() arround newpage() in mntcache
newpage() does not raise error().
2015-06-16 06:05:12 +02:00
cinap_lenrek 64ed3658d2 kernel: add pagechaindone() to wakeup processes waiting for memory
we keep the details about palloc in page.c, providing pagechaindone()
for mmu code to be called after a series of pagechainhead() calls.
2015-06-15 17:40:47 +02:00
cinap_lenrek 8a3b388ffe kernel: implement separate wait queues for page allocation
give kernel processes and local disk file servers (procs
having noswap flag set) a clear advantage for page allocation
under starved condition by giving them ther own wait queue so
they get readied as soon as pages become available.
2015-06-15 16:05:00 +02:00
cinap_lenrek 9ab48ee370 hjfs: defer parent directory permission check for wstat
check parent directory permission *after* we determined
that the new name does not exist in the parent, so that
when the new name is the same as old name then no write
permission is required in the parent directory.
2015-06-15 08:28:10 +02:00
cinap_lenrek 13ec55922f hjfs: fix wstat
- rename to same name is ok
- only truncate when file size is different
- check for uid/gid *change*, not if it is specified or not
2015-06-15 01:57:54 +02:00
cinap_lenrek 5adf0606f1 nusb/serial: remove unused channel 2015-06-15 00:30:19 +02:00
cinap_lenrek 584caf6d1c zynq: remove unused PTE typedef
all the mmu code uses ulong, so get rid of the typeded.
2015-06-15 22:32:15 +02:00
cinap_lenrek 13a79fbb72 zynq: remove unused statistics fields from Mach structure 2015-06-15 22:13:55 +02:00
cinap_lenrek 65db705481 ndb/dns: cleanup forwarding code (redistrib())
instead of copying the whole packet, just save the
udp header and restore it aftwards. dont call redistrib()
when there are no forwards (this should be almost always
the case).
2015-06-14 21:31:44 +02:00
ftrvxmtrx a55eed44c6 aux/vga: == is not strncmp 2015-06-13 21:28:33 +02:00
cinap_lenrek 7f4b037b0b htmlroff: fix wrong newline in \name handling (| -> ||) 2015-06-13 20:58:56 +02:00
ftrvxmtrx 453ca8db43 qc, 9/ppc, 9/mtx: fix wrong if statements 2015-06-13 20:21:26 +02:00
cinap_lenrek d6eb7cc71c kernel: dont use smalloc() to allocate pte array in ibrk()
when we'r out of kernel memory, it is probably better to
let that alloc fail instead of hanging while holding the
segment qlock.
2015-06-13 17:50:26 +02:00
cinap_lenrek 27fb90eb6e vblade, cifs, usbuhci: fix parenthesis 2015-06-13 15:03:56 +02:00
cinap_lenrek 9c1dff3fa9 lock: reopen lockfile after changing mode to make lock effective
lock is acquired on open/create when file has DMEXCL set in mode,
so we need to reopen the file after setting the bit with wstat.
2015-06-13 15:01:02 +02:00
cinap_lenrek 1473e5d437 lib9p: fix lib9p wstat qid.type/mode checks (fixes lock(1) for ramfs/hjfs) 2015-06-13 12:43:15 +02:00
cinap_lenrek f92057cc39 ndb/dns: use same buffer size of udp packet in redistrib() as dnudpserver() (fixes assert) 2015-06-13 22:37:26 +02:00
cinap_lenrek cc3abe39aa games/doom: remove Makefile 2015-06-12 17:50:43 +02:00
cinap_lenrek e4c3f92c16 games/doom: fix desyncing demo (thanks qwx)
the code used P_Random()-P_Random() in some places which has
undefined evaluation order resulting in the wrong pseudo random
numbers being returned causing demo playback to desync.

this change adds P_Random2() function which returns the right
delta-random number and uses it in place of P_Random()-P_Random()
expression.
2015-06-12 17:28:09 +02:00
cinap_lenrek 34ae4649cc kernel: fix accounttime() for HZ >= 1000
"milli-CPU's" is too low resolution for the decaying load average
calculation when HZ >= 1000.
2015-06-12 14:28:31 +02:00
cinap_lenrek 2112ad6793 zynq: increase kernel memory for graphics 2015-06-11 21:26:26 +02:00
cinap_lenrek d8bcd6c8e4 zynq: mouse acceleration 2015-06-11 16:44:05 +02:00
cinap_lenrek 36d2504adb zynq: make screen and cursor kprocs exit properly 2015-06-11 16:14:11 +02:00
cinap_lenrek 0dbbe79116 zynq: add support for hardware cursor
to enable hardware cursor, write "addr va" to /dev/mousectl where
va is the virtual address of the cursor position register.
2015-06-11 16:04:24 +02:00
ftrvxmtrx 98640950d7 merge 2015-06-11 22:14:24 +02:00
ftrvxmtrx a25758dce7 fix strncmp/memcmp used with a wrong number 2015-06-11 22:13:55 +02:00
cinap_lenrek 036ae2e397 cifsd: smbrename is still ok when file is readonly (fixed git) 2015-06-10 17:18:31 +02:00
cinap_lenrek c89b0b3c23 zynq: fix flushmemscreen() 2015-06-10 01:27:44 +02:00
ftrvxmtrx be36fab405 remove drawlsetrefresh and convM2Tnoenc: undefined functions 2015-06-09 18:25:09 +02:00
ftrvxmtrx e56e61fed1 addpt(2): put badrect in .SH NAME so that it gets into the searchindex 2015-06-09 12:32:38 +02:00
ftrvxmtrx 86acce7c4d esetcursor(2), alarm(2): fix prototypes 2015-06-09 12:29:57 +02:00
ftrvxmtrx 72a168b5fb event(2): fix estartfn prototype 2015-06-09 11:54:22 +02:00
ftrvxmtrx 3bd0d66686 authsrv.h: remove nonexistent prototypes 2015-06-09 11:46:37 +02:00
ftrvxmtrx a314302e64 libdraw: sync allocimage/allocwindow prototypes with man pages 2015-06-09 10:33:30 +02:00
cinap_lenrek 94333d83ab ip: fix wrong radix for iphash() (thanks yoann padioleau)
yoann padioleaus report on 9fans:

> I think I’ve found a bug in the network stack.
> in 9/ip/ip.h there is
> struct Ipht
> {
> 	Lock;
> 	Iphash	*tab[Nipht];
> };
>
> where Night is 521,
>
> but then in 9/ip/ipaux.c there is
>
> ulong
> iphash(uchar *sa, ushort sp, uchar *da, ushort dp)
> {
> 	return ((sa[IPaddrlen-1]<<24) ^ (sp << 16) ^ (da[IPaddrlen-1]<<8) ^ dp ) % Nhash;
> }
>
> where Nhash is just 64,
2015-06-09 10:04:04 +02:00
cinap_lenrek 90b4fe9cf6 zynq: add /dev/fbctl to attach framebuffer to devdraw 2015-06-09 09:17:55 +02:00
cinap_lenrek cda46731d8 devsegment: fix parsecmd() memory leak 2015-06-09 03:33:37 +02:00
cinap_lenrek e2a5d674d9 libdraw: consistent use of nil for pointers, error handling 2015-06-09 01:42:59 +02:00
ftrvxmtrx 0fc761bc84 unix is BUGGERED. remove it 2015-06-09 00:15:59 +02:00
ftrvxmtrx 7a95bef00e authsrv: remove unused opasstokey 2015-06-09 23:53:07 +02:00
ftrvxmtrx 2c505c160e addpt(2): document badrect function 2015-06-09 23:34:36 +02:00
ftrvxmtrx e77002cdab freeimage(2), readcolmap(2), writecolmap(2): fix prototypes 2015-06-09 23:23:00 +02:00
cinap_lenrek 477f3ce3ea exec(2): exec argument size only limited by user stack size 2015-06-08 21:08:57 +02:00
ftrvxmtrx e89e54d1a3 exec(2): fix prototypes 2015-06-08 12:59:51 +02:00
cinap_lenrek 14a7c237b5 aux/vga: disable nvidiascale() as it broke modeset on kenjis card
this code needs revision, need a list of cards where this actually
works.
2015-06-08 02:43:49 +02:00
cinap_lenrek c5b0edecc9 devfs: remove useless ~OTRUNC mask for openmode 2015-06-07 17:41:43 +02:00
cinap_lenrek b554ad054b zynq: fix /dev/pl
prevent double sleep():
callers to sleep() need to be serialized as there can only
be one process sleeping at a time. plrlock and plwlock do
this.

wait for dma to complete in plwrite():
we have to wait for the dma to complete before touching
plbuf again.

maintain COPEN flag in archopen()/archclose():
when open fails because it was in use, clear the COPEN
flag, so archclose() wont screw stuff up.
2015-06-07 17:33:31 +02:00
stanley lieber 1caaa0318b fortunes: Turning off comments. 2015-06-06 18:20:48 -04:00
cinap_lenrek 9d3bc16469 libsec/tlshand: implement client side ECDHE (many thanks to pr!) 2015-06-07 22:14:01 +02:00
cinap_lenrek 079d3f4002 libsec/ecc: fix memory leak (free() vs mpfree()) 2015-06-07 22:12:46 +02:00
cinap_lenrek 4be3300e98 prep(8): edisk also adds a EFI system partition (esp) when not already exists. 2015-06-06 02:13:01 +02:00
cinap_lenrek 1613fd9f52 disk/edisk: create esp partition in addition to plan9 partition in auto mode 2015-06-05 21:57:08 +02:00
cinap_lenrek bbc35cc01b 9boot: look for plan9.ini in all filesystems accessible to efi to find plan9 partition
try the handle buffer in reverse order looking for plan9.ini
to find plan9 partition (9fat). when that fails, we'll default
to the first handle which should be the esp.
2015-06-05 05:09:22 +02:00
mischief 045530aed2 ape: define long long limits 2015-06-04 17:16:23 -07:00
cinap_lenrek 16b3a688c3 dossrv: maintain file creation date/time on disk, fsinfo sector can be 0 (disabled) 2015-06-04 04:34:08 +02:00
cinap_lenrek e83ef3d1e2 disk/format: create Fatinfo sector for fat32 2015-06-04 03:58:03 +02:00
cinap_lenrek 137a762eca disk/edisk: fix blank mode
there where two problems with blank (-b flag):

we did not update the backup header when there was already a valid
backup header in place. we always want to initialize a new backup header
in blank mode!

we now also check the backup header matches the primary (or the other
way arround depending on which header could be read), reporting any
mismatches and restoring the backup from the data of the primary.

the protective mbr needs to start at sector 1 not 0 (apparently, this
matters for ovmf).
2015-06-03 23:19:13 +02:00
cinap_lenrek 8caf4d3bcb authsrv: use plan9 key for http authentication
in addition to /sys/lib/httppasswords, allow http authentication
to use the plan9 password, which can be changed by the user.
2015-06-02 01:15:43 +02:00
cinap_lenrek 0afac04530 hgweb.cgi: +x 2015-06-02 23:44:39 +02:00
cinap_lenrek cfd0698dbd hgweb.cgi: take REPO_ROOT and REPO_NAME from env, so can be used out of the box 2015-06-02 23:41:16 +02:00
cinap_lenrek 5c6357de8b devtls: ignore UnrecogniedName (112) alert message (for SNI) 2015-06-01 01:32:57 +02:00
cinap_lenrek 42484b6ef2 disk/fdisk: learn about EFI system partition (type 0xEF), honor protective mbr (type 0xEE)
efi systems may use traditional dos partition table
with an esp (efi system partition). otherwise, honor
the protective mbr partition (0xEE) and exit when we
encounter it.
2015-05-31 19:30:38 +02:00
cinap_lenrek 8278f6e34c prep(8): document disk/edisk 2015-05-31 14:15:49 +02:00
cinap_lenrek 82aa1d5c78 integrate disk/edisk with diskparts, bootfs and installer (gpt support) 2015-05-31 13:06:18 +02:00
cinap_lenrek 3e124e1f13 libdisk: error handling, sanity checks
- make sure disk file is an actual file and not a directory, log or empty file
- sanity check: file has to be at least one sector to be a disk
- simplify error handling using freedisk()
2015-05-31 12:58:13 +02:00
cinap_lenrek ce76af64fe disk/edisk: little improvements
- make UU() shorter by using long long constant to encode node field
- store Flag as a mask, not as a shift count
- put the attributes before the name in cmdsum() as it is fixed length
2015-05-31 11:19:22 +02:00
cinap_lenrek c770b09f43 test: use libc.h constants for access() mode (thanks qrstuv) 2015-05-31 09:37:59 +02:00
cinap_lenrek 460c598430 io.h: fis comment PciSID (alphapc, kw, mtx, teg2) (thanks qeed!) 2015-05-30 16:50:02 +02:00
cinap_lenrek b137420eff pc/io.h: fix comment for PciSID 2015-05-30 16:45:02 +02:00
cinap_lenrek 1376d559ed disk/edisk: fix usage (was disk/gdisk) 2015-05-30 03:36:58 +02:00
cinap_lenrek 4a4575bd4e disk/edisk: gpt partition table editor (no manpage, work in progress) 2015-05-30 03:22:08 +02:00
cinap_lenrek 09b6a92145 disk/partfs: adding identical partition is no-op 2015-05-30 22:37:46 +02:00
cinap_lenrek b5cbd0bebd disk/fdisk: fix help text 2015-05-30 22:26:18 +02:00
cinap_lenrek 3ceedfd1e1 nusb/disk: adding identical partition is a no-op 2015-05-30 22:24:55 +02:00
cinap_lenrek de3c058efb cputime(2): fix prototype for cycles() (thanks qrstuv) 2015-05-28 18:11:45 +02:00
cinap_lenrek e333a07ded tcs: fix swaped alias mapping gb <-> gb2312 2015-05-28 16:39:04 +02:00
cinap_lenrek 3d1e12363d uhtml: check if document is valid utf8 even with charset specified
often, documents specify charsets but are really utf-8 encoded.
we now try to decode as utf-8 and only if that fails assume
the charset specified in the document.
2015-05-28 16:37:55 +02:00
cinap_lenrek e601e1605b libsec: cleanup x509 and tlshand
- add overflow checks for newbytes(), newbits(), newints()
- remove suspicious nil check from estrdup()
- remove useless nil checks before free
2015-05-28 00:31:36 +02:00
cinap_lenrek 16bbaa2014 ape: include <sys/types.h> in <sys/wait.h> for pid_t (thanks jens staal) 2015-05-27 21:48:42 +02:00
cinap_lenrek a788f2000d libsec/x509: fix verify_signature(), digest_certinfo(), X509dump()
make digest_certinfo() return the digest length, otherwise
return -1 as an error and handle it in the callers.

pass expected digest length to verify_signature() and
check digest length from certificate! make sure we wont
run off the buffer.

fix newlines in error prints of X509dump().
2015-05-27 19:52:06 +02:00
cinap_lenrek 5f7d769a02 libsec/x509: use SHA2-256 digest algorithm instead of MD5
this implements SHA2 (224, 256, 384, 512) signature algorithms and
uses sha256WithRSAEncryption for X509req() and X509gen() instead
of oid_md5WithRSAEncryption.
2015-05-27 18:35:37 +02:00
cinap_lenrek 5ef922959a pci: map pci bars for devices with base class codes (ccrb) 0x00 and 0x0D-0x11 (thanks qeed)
there are a few more device base class codes defined 0x0D-0x11, and
qemu appears to use base class code 0x00 for some of its fake
devices.
2015-05-27 00:23:13 +02:00
cinap_lenrek d6a91e0ae4 cc: set unspecified elements to zero in local variable initializers
the compiler used to skip zero initialization when initializer
list was given not covering unspecified elements. now we zero
all non explicitely initialized elements. for example:

typedef struct F F;
struct F
{
	int a;
	int b;
	int c;
};

void
main(void)
{
	char a[16] = { 1, 2, 3 };	/* a[3..15] initialized to zero */
	F f = { .b = 1 };			/* f.a, f.c initialized to zero */
}
2015-05-26 19:25:06 +02:00
stanley lieber cfafa67640 rootstub: do not create pkg directories 2015-05-25 15:04:30 -04:00
stanley lieber 0853e2cc3b remove pkg(1): we regret the error 2015-05-25 15:03:44 -04:00
cinap_lenrek ff2e8f308d thread(2): fix prototype for threadint() and threadkillgrp() (thanks qwx!) 2015-05-25 13:03:45 +02:00
cinap_lenrek 0d87019a9b cc: handle unaligned data in = {0} local initializer
the emited code that initializes local variables did not handle
unaligned data causing stack corruption, affecting code like:

void main(void)
{
	char a[9] = {0};
}

this change will emit code that does byte stores for the unaligned
bytes and also handles small objects (<= 16 bytes) without branches.
2015-05-25 01:57:18 +02:00
mischief c727d2ae8a cdproto: /sys/log/httpd should be a directory 2015-05-20 18:25:53 -07:00
mischief a94a8a06de revert httpd log file goof 2015-05-20 18:16:54 -07:00
cinap_lenrek 890c459567 webfs: send servername in tls client hello (SNI) 2015-05-21 02:28:06 +02:00
cinap_lenrek 40360a992d libsec: implement tlsClient support for RFC6066 server name identification (SNI)
tlsClient() now can optionally send the server_name in the ClientHello
message by setting the TLSconn.serverName. This is required for some
https sites.
2015-05-21 02:26:57 +02:00
mischief a1bbf39c34 ip/httpd: fix syslog file 2015-05-20 15:38:56 -07:00
mischief 5d2253af99 libhttpd: declare hvprint 2015-05-20 15:09:34 -07:00
cinap_lenrek d8487e98c6 etherigbe: spi eeprom support (thanks echoline) 2015-05-20 09:49:27 +02:00
cinap_lenrek 6198954859 libdraw: don't loop forever when getting eof on /dev/cons in keyboard ioproc 2015-05-19 20:04:47 +02:00
cinap_lenrek 8f8c2d6779 aux/vga: dont use /proc/$pid/mem to access vga bios
using /proc/$pid/mem to access vga bios is not portable and crashes
sgi machines when aux/vga is run. instead, try /dev/realmodemem
first (provided by realemu), then #v/vgabios.
2015-05-19 14:02:02 +02:00
cinap_lenrek 041d732be7 tar, tarfs: implement longname support
this allows extracting tar archives that use longnames extension,
where the real filename is stored in a special entry with
linkflag == 'L' before the file entry. also skip longlink entries
with linkflag == 'K'.
2015-05-19 12:39:45 +02:00
cinap_lenrek 76ee4c3988 usbd: set device info for control file (see usb(3), thanks qeed) 2015-05-18 01:26:29 +02:00
cinap_lenrek c8c65f183d merge 2015-05-18 00:32:19 +02:00
cinap_lenrek 8183f0ec85 cdproto: /sys/log/pop3 2015-05-18 00:29:12 +02:00
stanley lieber 86f22d3c08 colors(1), who(1): add missing SOURCE entries 2015-05-17 12:53:05 -04:00
cinap_lenrek dfdc52ea7a libc: use Runemax instead of hardcoded 0x65536 for fmtchar check (thanks qrstuv) 2015-05-17 07:02:44 +02:00
cinap_lenrek bf74dfbc7a kbdfs: Runemax is inclusive. 2015-05-17 06:59:09 +02:00
stanley lieber 45384b0026 fortunes: What's wrong with the obvious? 2015-05-15 21:08:37 -04:00
cinap_lenrek 0d701b7759 gunzip: the extra length field (XLEN) is two bytes instead of one
example file:
https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R50f.tgz
2015-05-15 07:53:22 +02:00
cinap_lenrek 21f97338f8 tcp: fix loopback slowness issue / set tcb->mss for incoming connections (thanks David du Colombier)
David du Colombier wrote:
> The slowness issue only appears on the loopback, because
> it provides a 16384 MTU.
>
> There is an old bug in the Plan 9 TCP stack, were the TCP
> MSS doesn't take account the MTU for incoming connections.
>
> I originally fixed this issue in January 2015 for the Plan 9
> port on Google Compute Engine. On GCE, there is an unusual
> 1460 MTU.
>
> The Plan 9 TCP stack defines a default 1460 MSS corresponding
> to a 1500 MTU. Then, the MSS is fixed according to the MTU
> for outgoing connections, but not incoming connections.
>
> On GCE, this issue leads to IP fragmentation, but GCE didn't
> handle IP fragmentation properly, so the connections
> were dropped.
>
> On the loopback medium, I suppose this is the opposite issue.
> Since the TCP stack didn't fix the MSS in the incoming
> connection, the programs sent multiple small 1500 bytes
> IP packets instead of large 16384 IP packets, but I don't
> know why it leads to such a slowdown.
2015-05-14 21:09:12 +02:00
Matthew Veety 2b4a488762 fixed by fuck up 2015-05-13 00:15:18 -04:00
Matthew Veety 80845af98b removed ukill. 2015-05-13 00:11:59 -04:00
cinap_lenrek aa0a20ed6e boot/zynq: use ./boothead.$cputype to invoke helper 2015-05-13 04:22:21 +02:00
cinap_lenrek 2d564a5004 boot/zynq: add jtagload utility 2015-05-13 04:12:49 +02:00
cinap_lenrek d57f23fb87 boot/zynq: implement sdmmc boot (fat) 2015-05-13 01:07:35 +02:00
stanley lieber bc4f14e015 fortunes: Feature requests will be ignored. 2015-05-11 11:52:44 -04:00
cinap_lenrek fb9a4ac610 emmc/pmmc: make all symbols static 2015-05-11 05:27:05 +02:00
cinap_lenrek 646062da1c kernel: state errstr.h dependency for proc.acid target (fixes acid kinit() on cleaned kernel source tree) 2015-05-11 05:09:31 +02:00
cinap_lenrek 4bfd4122d9 nusb/serial: recognize aijuboard jtag interface 2015-05-11 02:34:54 +02:00
cinap_lenrek 5275d49d8f webfs: fix proxy authentication 2015-05-10 07:46:53 +02:00
cinap_lenrek 0da5888901 realemu: ignore access to CMOS/RTC address/data registers
the kernel wont allow access to i/o ports 0x70/0x71, so
ignore the access. reads return 0xFF. this fixes vesa on
lenovo e540.
2015-05-09 07:50:05 +02:00
stanley lieber 4547b5070c passwd(1): passwd no longer needs to be run on a terminal; netkey is more stubborn. 2015-05-03 17:37:54 -04:00
stanley lieber bafadebc19 audio(1): explain mp3enc wants raw data in the opposite byte order to /dev/audio (thanks, eekee) 2015-05-01 14:03:29 -04:00
stanley lieber 14ebbcb75b audio(1): fix example 2015-05-01 12:05:30 -04:00
cinap_lenrek 35c9648ee1 pass Ureg* argument to note handler in R0 register on arm
userspace note handlers, like any function, expect ther
first argument in R0 register on arm.
2015-04-30 16:29:40 +02:00
cinap_lenrek 12bb7bcfff libsec: remove aesCTRencrypt()/aesCTRdecrypt() (thanks mischief and qrstuv)
as mischief and qrstuv point out, these functions are not very usefull
and are even implemented wrong (incrementCTR()), so deleting the code.
2015-04-29 02:58:10 +02:00
cinap_lenrek e9c9ea4235 sam: don't make scroll-wheel-up change focus (thanks clsmith) 2015-04-28 19:32:21 +02:00
cinap_lenrek da689241d0 sam: prevent array overflow with multiple -i and -a arguments (thanks clsmith) 2015-04-28 19:30:52 +02:00
cinap_lenrek e20d7c4aad etheriwl: make rxon() static (thanks aap) 2015-04-27 21:32:17 +02:00
cinap_lenrek 64849ab5f3 etheriwl: check the bluetooth co-existance errors (thanks qeed) 2015-04-26 18:02:49 +02:00
cinap_lenrek e10287042e etheriwl: support for Centrino Wireless-N 2230 from freebsd driver (thanks qeed)
big thanks to qeed for porting support for Wireless-N 2230 from
freebsd driver!
2015-04-24 04:13:19 +02:00
cinap_lenrek 99718a581b bzfs: handle erealloc(..., 0) 2015-04-23 18:40:00 +02:00
cinap_lenrek a645a2f83d lib9p: handle erealloc9p(..., 0) 2015-04-23 18:25:19 +02:00
cinap_lenrek 4e7efadf12 hjfs: fix erealloc(..., 0) crash when removing member from group array makes it empty (thanks 9dan) 2015-04-23 18:19:48 +02:00
cinap_lenrek c1ff805e23 cc: fix non constant pointer initializer for other compilers than 8c/6c
i made a mistake here as this change breaks the arm and mips compilers
which lack an optimiation in xcom() that folds constant pointer arithmetic
into the offset. on arm, the a node is a complex expression with op OADD of
type TIND but the test rejected the (valid) pointer arithmetic.

instead, we now test for the operations which cannot be constant instead
of using the type as a proxy.
2015-04-23 05:12:57 +02:00
cinap_lenrek 7f0728b7f4 aux/listen: removing service script sholud kill listener (thanks mischief)
mischief spotted that the only way for listeners to go away was
truncating (but not removing) a service script. this is wrong and
not as described in the manpage.

this change makes removing (or truncating) a listen script stop
the listener.

scandir() first marks all current announces, then reads the service
directory adding announces which will clear the marks for the ones
already there or add a new unmarked one. finally, we shoot down and
remove all still marked announces.
2015-04-23 03:17:25 +02:00
cinap_lenrek 8cb7211a42 secstore(1): add DIAGNOSTICS section 2015-04-22 20:18:11 +02:00
cinap_lenrek 07faf720c9 secstore: don't print errors for dial() and readnvram() when not in verbose mode
when no secstore server has been configured or no nvram is
setup, exit silently with error status.
2015-04-22 20:08:50 +02:00
cinap_lenrek fd80dde429 hjfs: preserve newlines in commit message (thanks BurnZeZ) 2015-04-22 19:54:13 +02:00
cinap_lenrek 81cbff917f gs: avoid 6c type propagation / constant folding issue for set_cb_end()
6c changed "- cmd_lagest_size + 1" into a *unsigned* 32bit constant. which
got added to 64bit pointer making pcb->limit > pcb->end resulting
in errors for partial commands in the buffer. removing the parentesis
propagates the operation to 64bit.
2015-04-17 06:18:43 +02:00
cinap_lenrek 57ad566dfc games/doom: fix mips 2015-04-17 22:19:23 +02:00
cinap_lenrek 82a797da70 kernel: leave shared, physical and fixed segments alone in killbig() 2015-04-16 16:30:14 +02:00
cinap_lenrek ef647a54c0 kernel: cannot interrupt segmentio commands
once we submit a command to segmentio process, we have to wait
for it to complete even if we got interrupted.
2015-04-16 16:07:36 +02:00
cinap_lenrek 39cf6b34e3 kernel: avoid posting note to kernel process in faulterror()
the intend of posting a note to the faulting process is to
interrupt the syscall to give the note handler a chance
to handle it. kernel processes however, have no note handlers
and all the postnote() does is set up->notepending which will
make the next attempt to sleep raise an Eintr[] error. this
is harmless, but usually not what we want.
2015-04-16 15:31:51 +02:00
cinap_lenrek 433b18ec2b cc: catch non constant pointer initializers
char	FOO[] = "abc";	/* ok */
char	*BAR = FOO;		/* ok */
char	*BAZ = BAR;		/* wrong */
2015-04-16 14:32:42 +02:00
cinap_lenrek 3d4fcc6c8a sokoban: fix non constant inializer 2015-04-16 14:29:13 +02:00
cinap_lenrek bcf54c0bfb kernel: pass segio error string by pointer
there's no need to waste space for a error buffer in the Segio
structure, as the segmentio kproc will be waiting for the next
command after an error and will not overwite it until we issue
another command.
2015-04-16 01:20:30 +02:00
cinap_lenrek 46070c3122 kernel: add segio() function for reading/writing segments
devproc's procctlmemio() did not handle physical segment
types correctly, as it assumed it can just kmap() the page
in question and write to it. physical segments however
need to be mapped uncached but kmap() will always map
cached as it assumes normal memory. on some machines with
aliasing memory with different cache attributes
leads to undefined behaviour!

we borrow the code from devsegment and provide a generic
segio() function to read and write user segments which
handles all the cases without using kmap by just spawning
a kproc that attaches the segment that needs to be read
from or written to. fault() will setup the right mmu
attributes for us. it will also properly flush pages for
segments that maintain instruction cache when written.
however, tlb's have to be flushed separately.

segio() is used for devsegment and devproc now, which
also allows for simplification of fixfault() as there is no
special error handling case anymore as fixfault() is now
called from faulting process *only*.

reads from /proc/$pid/mem can now span multiple pages.
2015-04-16 00:45:25 +02:00
cinap_lenrek 88d7d8428a upas/smtp: cleanup mkfile
no need to list headers explicitely as they are implied by $HFILES.
2015-04-15 01:59:17 +02:00
cinap_lenrek 35e1aa1bfa segment: don't store pointers in a long 2015-04-13 23:35:36 +02:00
cinap_lenrek 656dd953a8 segment: fix read/write g->dlen race, avoid copying kernel memory, qlock
code like "return g->dlen;" is wrong as we do not hold the
qlock of the global segment. another process could come in
and override g->dlen making us return the wrong byte count.

avoid copying when we already got a kernel address (kernel memory
is the same on processes) which is the case with bread()/bwrite().
this is the same optimization that devsd does.

also avoid allocating/freeing and copying while holding the qlock.
when we copy to/from user memory, we might fault preventing
others from accessing the segment while fault handling is in
progress.
2015-04-13 23:18:56 +02:00
cinap_lenrek 85e144dcb0 zynq: invalidate cache before booting cpu1
sometimes, machine would crash on boot because
of data cache inconsistency. invalidating the
cache before booting cpu1 fixes it.
2015-04-13 23:04:53 +02:00
cinap_lenrek a43321946e segment: speed up fixedseg() doing single pass over freelist
walking the freelist for every page is too slow. as we
are freeing a range, we can do a single pass unlinking all
pages in our range and at the end, check if all pages
where freed, if not put the pages that we did free back
and retry, otherwise we'r done.
2015-04-12 18:08:06 +02:00
cinap_lenrek 98a7eae9c0 segment(3): document fixed segment creation 2015-04-12 16:38:39 +02:00
aiju d9880518f0 merge 2015-04-12 16:16:19 +02:00
cinap_lenrek a079cd1a3a merge 2015-04-12 16:06:28 +02:00
cinap_lenrek 647a1da108 segment: fix print buffer overflow, map fixed segments uncached, add to zynq kernel 2015-04-12 16:05:05 +02:00
cinap_lenrek 81e6b7e9c9 merge 2015-04-12 22:31:34 +02:00
cinap_lenrek 461c2b68a1 kernel: fixed segment support (for fpga experiments)
fixed segments are continuous in physical memory but
allocated in user pages. unlike shared segments, they
are not allocated on demand but the pages are allocated
on creation time (devsegment). fixed segments are
never swapped out, segfreed or resized and can only be
destroyed as a whole.

the physical base address can be discovered by userspace
reading the ctl file in devsegment.
2015-04-12 22:30:30 +02:00
aiju e8221d07d8 games/gb: improve sound emulation by modelling analog behaviour 2015-04-12 14:55:25 +02:00
stanley lieber d009b0013d nintendo(1), qer(8): fix typos 2015-04-11 23:34:25 -04:00
aiju 2a1d369281 games/gb: limit audio range to prevent clipping 2015-04-11 16:07:15 +02:00
stanley lieber aadbcf0a32 nintendo(1): update for gbc compatability 2015-04-10 18:32:22 -04:00
cinap_lenrek 5951073a57 merge 2015-04-11 22:05:00 +02:00
cinap_lenrek 771cb2a9cb ether82563: work arround bad eeprom checksum for some i218 card (thanks BurnZeZ)
on some machines, the eeprom checksum reads out as 0x3ABA
because of some bios issue. adding a flag for ignoring the
checksum and on i218 controllers.
2015-04-11 22:03:47 +02:00
stanley lieber 61f826d45f mothra(1): replace code.google.com with code.9front.org 2015-04-10 15:00:05 -04:00
cinap_lenrek 74b37c286f bootrc: simplify bootargs splitting avoiding awk 2015-04-09 15:36:20 +02:00
cinap_lenrek 5fd97c7d60 pc, pc64: remove PCICONS debug buffer from pci.c 2015-04-09 14:55:01 +02:00
cinap_lenrek ca4e12839a pool: avoid triggering assert(b->magic != FREE_MAGIC) in blocksetsize() for mallocalignl()
when we trim the front of a block with freefromfront(),
the block magic of the back was not initialized which
could sometimes trigger the assert in blocksetsize()
to fail. fix is to just move the initialization of the
magic field before the blocksetsize() call.

the second b->magic = UNALLOC_MAGIC isnt really required
but just done for consistency with the trim() code above.
2015-04-08 21:04:10 +02:00
cinap_lenrek adfb8dff26 nusb/kb: always try to recover on error, fix recover for multi-function devices
when we get an i/o error, always call hdrecover() which
will reset the port and reinitialize the interface of
the calling processes endpoint.

handle the case when we have multi-function device with
multiple reader procs in hdrecover(). the sequence is
as follows:

1) any of the reader procs encounters i/o error and calls hdrecover(),
acquires qlock and initiates port reset.
2) any other readerprocs will now encounter i/o error (due to reset) and also call
hdrecover() but will be waiting on the qlock for reset to complete.
3) first process completes reset and reinitializes its interface with setproto()
and then releases the qlock for the other readers todo the same.
2015-04-08 18:07:16 +02:00
cinap_lenrek fcd45e0cdd pci: just in case the bios is drunk 2015-04-08 03:46:49 +02:00
cinap_lenrek b7ceab84d3 pc, pc64: handle 64-bit pci membars
this avoids listing the upper half of 64-bit membars
in Pcidev.mem[] array avoiding potential confusion
in drivers.

we also check if the upper half is programmed to zero
by bios and otherwise zap the entry in Pcidev.mem[]
and print a warning.
2015-04-08 03:34:08 +02:00
cinap_lenrek fba26da490 pc, pc64: extend initial memory map for qemu multiboot data
qemu puts multiboot data after the end of the kernel image, so
to be able to KADDR() that memory early, we extend the initial
identity mapping by 16K. right now we just got lucky with
the pc kernel as it rounds the map to 4MB pages.
2015-04-08 02:50:09 +02:00
mischief 853823f435 pc: import intel i218 nic changes from 9atom 2015-04-07 11:38:48 -07:00
cinap_lenrek 49fe7b0dd0 kernel: move arrow cursor definition to port/devmouse.c 2015-04-07 22:05:48 +02:00
cinap_lenrek 39c3bc277d sgi: disable graphical arcs console printing on screen modeset
when we switch to graphics mode, we do not want graphical arcs console
to print on the screen anymore as it assumes 8bit color mode and just
messes up the screen on kernel prints.
2015-04-07 22:02:57 +02:00
cinap_lenrek 022856f94e sgi: keyboard, mouse and cursor for indy 2015-04-02 18:35:43 +02:00
aiju d9af840ca2 games/gb: improved audio code 2015-04-02 15:30:12 +02:00
cinap_lenrek ec8d0d9e80 merge 2015-04-02 05:31:23 +02:00
aiju 8e588754bc games/gba: fix -3 crash and prevent >100% speed 2015-04-02 22:09:34 +02:00
cinap_lenrek ba7fbf0114 audiohda: add AMD FCH Azalia Controller (thanks qeed) 2015-04-02 05:30:00 +02:00
aiju 52ab0d1534 games/gb: fix gbc dma 2015-04-01 19:27:52 +02:00
aiju 66c98fab71 games/gb: fix -2/-3 2015-04-01 19:02:03 +02:00
aiju edfdc4ac07 new games/gb: better emulation and gbc support 2015-04-01 16:17:17 +02:00
cinap_lenrek 0b001e265c ether8169: fix Macv45 2015-04-01 15:22:37 +02:00
cinap_lenrek 0f785af644 ether8169: add 8168GU mac id (thanks qeed) 2015-04-01 14:58:29 +02:00
aiju 86bfd0331d games/c64: writes to I/O area do not affect underlying memory (documentation lied) 2015-04-01 12:49:59 +02:00
cinap_lenrek 2d0088598b devkbd: remove kbdputc() unused definition. 2015-04-01 12:21:11 +02:00
cinap_lenrek 736df3bd6c devkbd: remove unused constants 2015-04-01 12:15:54 +02:00
cinap_lenrek 3b08fd0769 merge 2015-04-01 01:32:37 +02:00
aiju 277185b51d games/gba: remove debugging print 2015-04-01 22:16:52 +02:00
cinap_lenrek b7ad532993 sgi: very primitive newport graphics driver for indy 2015-04-01 01:31:31 +02:00
cinap_lenrek ebf85fb7b7 vl: prevent stack altering instructions to be hoisted above loads
fixes bug with libmemdraw where the linker would hoist
the final ADD $const, SP at the end over loads from the
stack causing the front to fall off once a interrupt hits.
2015-04-01 01:30:16 +02:00
cinap_lenrek 1769b00b91 nintendo(1): add SOURCE entry for games/gba 2015-03-30 15:55:50 +02:00
cinap_lenrek e9e45e17eb sgi: preserve R27 in setregisters(), use setregisters() in noted()
GEVector() saves the exception return PC in Ureg.r27 which needs
to be preserved.

there should be no reason for the user to change the status
register from noted() eigther, so we now just use setregisters()
in noted() to restore previous general purpose registers. this
means that CU1 will always be off after noted() because notify()
has disabled the FPU on entry and set fpstatus to FPinactive
if it was on. once user starts using FPU again, it will trap and
restore fpu registers.
2015-03-30 00:26:33 +02:00
cinap_lenrek 2c9b1c6b53 etherseeq: reset the card when it gets stuck (dma timeouts) 2015-03-30 23:45:09 +02:00
cinap_lenrek eff2a40c16 merge 2015-03-28 14:12:35 +01:00
cinap_lenrek feb92fedb1 sgi: new approach for etherseeq
touching transmit descriptors while dma is running causes the
front to fall off. new approach keeps a counter of free
descriptors in the Ring structure that is incremented
by txintr() when transmit completed.

txintr() will clean descriptors once dma has stopped and
restart dma when there are more descrtors in the chain.
2015-03-28 14:11:17 +01:00
aiju 5a34ad16cd games/gba: very subtle timer bug fixed 2015-03-28 10:20:52 +01:00
cinap_lenrek 177cbace73 sgi: work in progress kernel for sgi mips machines (only tested with r5k indy)
this provides basic console support using the ARC bios routines
theu uartarcs driver. and has native seeq ethernet driver which
was written by reading the 2ed devseq driver as i have no
documentation on the hardware. mmu and trap code is based on the
routerboard kernel.
2015-03-28 05:15:40 +01:00
ethan 9fd3e3f239 mothra: remove unused confirmcurs; move confirmcursor up with the other cursors. 2015-03-27 01:57:46 +00:00
stanley lieber 791545f28f fortunes: TED, day 1: I want to believe -- WIRED magazine 2015-03-26 20:43:41 -04:00
cinap_lenrek bf365ac50e pc, pc64: state dependency to usbehci.h in mkfiles 2015-03-25 17:42:51 +01:00
cinap_lenrek fbe78d4687 mpdigdiv.s: aaaaand its gone! 2015-03-25 14:19:05 +01:00
cinap_lenrek 1cff9ab4e8 ape: fix main9 for mips 2015-03-25 13:56:04 +01:00
cinap_lenrek a7925e3ecb libmp: use portable mpdigdiv routines for mips (causes invalid instruction trap on indy) 2015-03-25 13:55:37 +01:00
cinap_lenrek cabf90e4ee ape: fix lockinit() for mips 2015-03-25 08:33:11 +01:00
cinap_lenrek 4687e196cc zynq: fix out of bounds access in etherprobe()
calling etherprobe() with -1 cardno will rereference
and call cards[-1].reset() which is wrong. don't do that!
2015-03-25 03:03:24 +01:00
cinap_lenrek 0bc9ad781f boot: allow alternative proto files per kernel and kernel config for bootfs.paq
bootmkfile will now looks for the following proto files in order
and pick the first one it finds to build the bootfs.paq file:

1)	$CONF.boofs.proto		(config specific)
2)	bootfs.proto			(kernel specific)
3)	$BOOTDIR/bootfs.proto	(default generic)
2015-03-25 00:11:54 +01:00
cinap_lenrek 8ab9c6d388 vc: fix coffsect.lnno overflow into nreloc
the coffsect.lnno field is 16 bit and can overflow into
the nreloc field confusing arc firmware on load. just
mask it to prevent overflow.
2015-03-24 22:54:26 +01:00
cinap_lenrek 3f4b45c4f1 boot: bind #c to /dev with MREPL instead of MBEFORE to avoid double entries 2015-03-23 03:15:58 +01:00
cinap_lenrek 8caec8564d vl, libmach, kernel: mips has 16K alignment for segments (for bigpages) 2015-03-22 17:49:28 +01:00
cinap_lenrek 80658d6ccf merge 2015-03-22 17:42:31 +01:00
cinap_lenrek 8e61a0036d usbohci: ensure Ed and Td alignment, fix for amd64 2015-03-22 17:41:35 +01:00
cinap_lenrek f2716ab227 merge 2015-03-19 11:45:50 +01:00
cinap_lenrek c86561f625 db: fix unicode support (thanks giacomo)
from the unicode-db patch readme:

command() receives a char* that is assigned to lp, which is a Rune*,
and lp is incremented later in readchar(), so each read consumed 4 bytes.
The only time command() is called is in runpcs() with bkpt->comm,
which is a char* built in subpcs through a char*, so the string stored in
bkpt->comm was not a Rune string. A way to test the bug is:

db program
main:b argv/X
:r
2015-03-19 11:44:26 +01:00
stanley lieber 3b5c56561c pushtls(2): tls.h -> libsec.h (thanks, pr) 2015-03-18 18:33:34 -04:00
cinap_lenrek 4d0343c9d2 dhcpd: ignore ";" filename from sgi arcs bootp(); command 2015-03-18 19:52:31 +01:00
cinap_lenrek dbbe430ec7 libmach: use #pragma pack to force 4 byte alignment of bootexec.h structures for amd64 2015-03-18 19:31:51 +01:00
cinap_lenrek 3889ada959 ape: silence compiler "no return at end of function" for mips lock.c 2015-03-18 19:30:12 +01:00
cinap_lenrek aac6784fce merge 2015-03-17 16:13:25 +01:00
cinap_lenrek f5f9ecdcfa 6c: MOVL xxx, r; MOVLQZX r, r -> MOVL xxx, r
eleminate MOVLQXZ instructions after MOVL as MOVL implicitely
zero extends the result.
2015-03-17 16:12:01 +01:00
stanley lieber 17ae0ea757 mp(2) man page: mpinvert, not mpinverse (thanks, pr) 2015-03-16 23:34:37 -04:00
cinap_lenrek 972cd5e3fc kernel: get rid of auxpage() and preserve cache index bits in Page.va in mount cache
the mount cache uses Page.va to store cached range offset and
limit, but mips kernel uses cache index bits from Page.va to
maintain page coloring. Page.va was not initialized by auxpage().

this change removes auxpage() which was primarily used only
by the mount cache and use newpage() with cache file offset
page as va so we will get a page of the right color.

mount cache keeps the index bits intact by only using the top
and buttom PGSHIFT bits of Page.va for the range offset/limit.
2015-03-16 05:46:08 +01:00
cinap_lenrek d0b1db98bc kernel: avoid repeated calls to reclaim(), dont miss last page in Pte
when we are skipping a process because we could not acquire
its segment lock, dont call reclaim() again (which is pointless
as we didnt pageout any pages), instead try the next process.

the Pte.last pointer is inclusive, so don't miss the last page
in pageout().
2015-03-16 05:23:38 +01:00
cinap_lenrek c1717aebf7 rsa(8): recommend secstore(1) for Plan 9 RSA private key storage 2015-03-15 21:24:03 +01:00
cinap_lenrek 9b7c978793 mothra: <del>, <ins>, <wbr> 2015-03-15 18:01:06 +01:00
cinap_lenrek 6411efcde8 mothra: add <strike> support 2015-03-15 17:05:24 +01:00
cinap_lenrek e451804a75 boot: disable group/other permission checking in bootfs paqfs
when building bootfs in d770 mode directory, the other permissions
in bootfs paq are masked off which results in boot to fail. theres
no point in checking group/other permissions on boot, so just disable
permissin checking in paqfs with the -a flag.
2015-03-15 15:27:56 +01:00
cinap_lenrek b821edbcab doom: print correct version number on mismatch (thanks qu7uux) 2015-03-14 22:23:39 +01:00
cinap_lenrek 2443d46a9e webfs: do not send credentials in automatic referer url 2015-03-14 01:09:37 +01:00
cinap_lenrek 060e69b15a httpauth: little helper for rc-httpd to do http basic authentication with plan9 auth server 2015-03-14 01:00:26 +01:00
cinap_lenrek 85cab72ea0 hg, python: remove proto files 2015-03-13 18:45:58 +01:00
cinap_lenrek e74d851d69 hg: install hgweb templates 2015-03-13 18:30:59 +01:00
cinap_lenrek e437b1b289 pemencode: handle base64 input length < 3, fix bogus zero termination 2015-03-12 17:44:33 +01:00
cinap_lenrek 757354dac6 imap4d: simplify auth code using encodefmt(), use readn() to get multiple of 3*18 in base64 input buffer 2015-03-12 17:29:17 +01:00
cinap_lenrek 7e7cc2c8d7 webfs: simplify http basic auth code by using encodefmt() 2015-03-12 17:26:49 +01:00
cinap_lenrek 69af2676b0 upas/marshal: deduplicate cistrcmp()/cistrncmp()/enc64()
use the libc versions of these routines avoiding
code duplication.
2015-03-12 17:23:56 +01:00
cinap_lenrek 6eba362810 ndb/dns: reduce sencodefmt() to not link in enc32()/enc64() encoders
the special sencodefmt() in ndb/dn.c is only used with %H format for
hexadecimal printing for binary strings. removing the unused
calls to enc32() and enc64() reduces the code size by arround 4K.
(this is usefull for ndb/getip which gets linked into the kernel).
2015-03-11 18:09:48 +01:00
cinap_lenrek 9babf6a347 encode(2): clarify lim argument to enc*(), add SOURCE reference for encodefmt() 2015-03-11 17:48:24 +01:00
cinap_lenrek 8c11b62af9 smtp, smtpd: fix use of enc64(), fix memory leaks in doauth()
the approximation of n*2 to calculate the number of output bytes
for enc64() fails for inputs of size < 3. this is fixed by using
encodefmt() which gets the calculation right and also simplifies
the code avoiding the allocation and freeing of intermediate string
buffers.
2015-03-11 17:14:56 +01:00
cinap_lenrek a44a1dbd19 gif: fix color table clipping (for cb5.gif) 2015-03-11 12:59:19 +01:00
cinap_lenrek a6f7507661 factotum: remove unused extern declarations of invoker and authdom from header 2015-03-11 11:56:02 +01:00
cinap_lenrek 4d211fdd48 kernel: fix integer overflow in syssegflush(), segment code cleanup
mcountseg(), mfreeseg():
use Pte.first/last pointers when possible and avoid constructs
like s->map[i]->pages[j].

freepte():
do not zero entries in freepte(), the segment is going away and
here is no point in zeroing page pointers. hoist common code at
the top avoiding duplication.

segpage(), fixfault():
avoid load after store for Pte** pointer.

fixfault():
return -1 in default case to avoid the "used but not set" warning
for mmuphys and get rid of the useless initialization.

syssegflush():
due to len being unsigned, the pe = PGROUND(pe) can make "chunk"
bigger than len causing a overflow. rewrite the function and deal
with page alignment and errors at the beginning.

syssegflush(), segpage(), fixfault(), putseg(), relocateseg(),
mcountseg(), mfreeseg():
keep naming consistent.
2015-03-10 18:16:08 +01:00
cinap_lenrek 5639d1e5fc wpa(8): the -p flag will also prompt for user/password on wpa enterprise 2015-03-10 00:44:17 +01:00
cinap_lenrek dfed1eb851 pushtls(2): fix signature to TLSconn.trace() 2015-03-10 00:41:46 +01:00
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 7b7c7f4451 merge 2015-03-06 18:30:25 +01:00