summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-07sshfs: fix race condition between sendproc() and recvproc()cinap_lenrek
there was a race between the sendproc putting the request on the sreqrd[] id and the recvproc handling the response, and potentially freeing the request before the sendproc() was finished with the request (or the fid). so we defer allocating a request id and putting it on the sreqrd[] stage after we have completely generated the request in vpack(). this prevents the handling of the request before it is even sent. this also means that the SReq should not be touched after calling sendpkt(), submitreq(), submitsreq(). secondly, putsfid() needs to acquire the RWLock to make sure sendproc() is finished with the request. the scenario is that recvproc() can call respond() on the request before sendproc() has unlocked the SFid.
2019-10-04cwfs: fix listen filedescriptor leakscinap_lenrek
2019-10-04lib9p: fix listensrv() filedescriptor leakscinap_lenrek
2019-10-04sshfs: use threadexits() instead of exits()cinap_lenrek
2019-10-03upas/fs: speedup mtree and henter()cinap_lenrek
move digest pointer into Mtree structrue and embed it into Idx struct (which is embedded in Message) to avoid one level of indirection during mtreecmp(). get rid of mtreeisdup(). instead we have mtreeadd() return the old message in case of a collision. this avoids double lookup. increase the hash table size for henter() and make it a prime.
2019-10-02pc: move low-level allocation details out of mmu.c into memory.c rampage() ↵cinap_lenrek
function
2019-10-02vgai81x: use vmap() for uncached access to cursor data instead of ↵cinap_lenrek
manipulating kernel page table on 386, the kernel memory region is mapped using huge 4MB pages (when supported by the cpu). so the uncached pte manipulation does not work to map the cursor data with uncached attribute. instead, we allocate a memory page using newpage() and map it globally using vmap(), which maps it uncached.
2019-09-22mergecinap_lenrek
2019-09-22ape/cc: add spimcinap_lenrek
2019-09-22mergecinap_lenrek
2019-09-222c(1): document 7c (arm64)cinap_lenrek
2019-09-22ape/cc: Add arm64 and remove alphaRoberto E. Vargas Caballero
2019-09-22usbxhci: fix endpoint stall recovery, handle Ep.clrhalt flagcinap_lenrek
after issuing CR_RESETEP command, we have to invalidate the endpoints output context buffer so that the halted/error status reflects the new state. not doing so resulted in the halted state to be stuck and we continued issuing endpoint reset commands when we where already recovered. handle the devusb Ep.clrhalt flag from devusb that userspace uses to force a endpoint reset on the next transaction.
2019-09-21cmd/ip/*: chown the network connection after authenticationcinap_lenrek
for servers that handle incoming network connections and authentication, change the owner of the network connection file to the authenticated user after successfull authentication. note that we set the permissions as well to 0660 because old devip used to unconditionally set the bits.
2019-09-21devip: fix permission checkingcinap_lenrek
permission checking had the "other" and "owner" bits swapped plus incoming connections where always owned by "network" instead of the owner of the listening connection. also, ipwstat() was not effective as the uid strings where not parsed. this fixes the permission checks for data/ctl/err file and makes incoming connections inherit the owner from the listening connection. we also allow ipwstat() to change ownership to the commonuser() or anyone if we are eve. we might have to add additional restrictions for none at a later point...
2019-09-21bootrc: unmount devip *before* starting factotumcinap_lenrek
we want devip to get reattached after hostowner has been written. factotum already handles this with a private authdial() routine that mounts devip when it is not present. so we detach devmnt before starting factotum, and attach once factotum finishes.
2019-09-21bootrc: remount devip after /dev/hostowner has been written by factotumcinap_lenrek
devip remembers the attach uname so after we set hostowner we remount devip so future connections have the right owner.
2019-09-21devproc: fix fishy locking in proctext(), check proc validity, static functionscinap_lenrek
the locking in proctext() is wrong. we have to acquire Proc.seglock when reading segments from Proc.seg[] as segments do not have a private freelist and can therefore be reused for other data structures. once we have Proc.seglock acquired, check that the process pid is still valid so we wont accidentally read some other processes segments. (for both proctext() and procctlmemio()). this also should give better error message to distinguish the case when the process did segdetach() the segment in question before we could acquire Proc.seglock. declare private functions as static.
2019-09-19devproc: move proctab() call after Qnotepg special case in procwrite()cinap_lenrek
2019-09-19kernel: simplify pgrpnote(); moving the note string copying to procwrite()cinap_lenrek
keeps handling of devproc's note and notepg files similar and in the same place and reduces stack usage.
2019-09-16ape: don't hardcode list of ape library directories in /sys/src/ape/lib/mkfilecinap_lenrek
this change allows one to drop library directories (like freetype) into /sys/src/ape/lib/ and have them built without having to change the mkfile.
2019-09-15bcm64: add addarchfile() prototype to fns.h (for qeed)cinap_lenrek
2019-09-14bcm64: enter page tables in mmutop *AFTER* switching asid in mmuswitch()cinap_lenrek
there was a small window between modifying mmutop and switching the asid where the core could bring in the new entries under the old asid into the tlb due to speculation / prefetching. this change moves the entering of the page tables into mmutop after setttbr() to prevent this scenario. due to us switching to the resereved asid 0 on procsave()->putasid(), the only asid that could have potentially been poisoned would be asid 0 which does not have any user mappings. so this did not show any noticable effect.
2019-09-12acid/kernel: for stacktraces, try to use context from error stack when ↵cinap_lenrek
process is not sleeping when a process state has not been saved (Proc.mach != nil) then the contents of Proc.sched should be considered invalid. to approximate a stacktrace in this case, we use the error stack and get a stacktrace from the last waserror() call.
2019-09-11ip/cifsd: dont return garbage in upper 32 bit of unix extension stat fieldscinap_lenrek
2019-09-10ip/cifsd: add basic support for UNIX extensionscinap_lenrek
2019-09-10ip/cifsd: exit to close connection when we get malformed smb header (fixes ↵cinap_lenrek
linux mount hang)
2019-09-09usbehci: silence "param declared but not used" compiler warning in ↵cinap_lenrek
itdinit()/sitdinit()
2019-09-09sdide: silence compiler warning in atadebug()cinap_lenrek
2019-09-09ape: Add mkstemp to /sys/src/ape/lib/ap/gen/mkfileRoberto E. Vargas Caballero
2019-09-09Add toascii() to apeRoberto E. Vargas Caballero
2019-09-09Add mkstemp to stdlib.hRoberto E. Vargas Caballero
q
2019-09-08mergecinap_lenrek
2019-09-08kernel: clear FPillegal in pexit() and before pprint()cinap_lenrek
pexit() and pprint() can get called outside of a syscall (from procctl()) with a process that is in active note handling and require floating point in the kernel on amd64 for aesni (devtls).
2019-09-08devproc: restore psstate info string in procstopwait()cinap_lenrek
2019-09-07Allow address expressions in ?c after int casts.Ori Bernstein
This fixes ocaml on non-x86 architectures, where we have code that looks like: #define Fl_head ((uintptr_t)(&sentinel.first_field)) Without this change, we get an error about a non-constant initializer. This change takes the checks for pointers and makes them apply to all expressions. It also makes the checks stricter, preventing the following from compiling to junk: int x; int y = 42; int *p = &x + y
2019-09-07mergeOri Bernstein
2019-09-07Libflac: Tell it that we have stdint.h so it finds SIZE_MAXOri Bernstein
2019-09-06Include integer limits from generic stdint.h in system-specific stdint.hOri Bernstein
2019-09-07mergecinap_lenrek
2019-09-07cc: fix void cast crashcinap_lenrek
the following code reproduces the crash: void foo(void) { } void main(int argc, char **argv) { (void)(1 ? (void)0 : foo()); } the problem is that side() gives a false positive on the OCOND with later constant folding eleminating the acutal side effect and OCAST ending up with two nested OCATS with the nested one being zapped (type == T).
2019-09-06Add missing UINTsz_MIN defines to ape stdint.hOri Bernstein
2019-09-06mergeOri Bernstein
2019-09-06sys/src/libventi: define VtEntryNoArchive constantDavid du Colombier
2019-09-06sys/src/libventi: implement vtsha1 and vtsha1check functionsDavid du Colombier
2019-09-06sys/src/libventi: implement vtreconn and vtredial functionsDavid du Colombier
2019-09-06ip/ipconfig: don't leave behind null address when dhcp gets interruptedcinap_lenrek
cleanup the null address (::) when the command gets interrupted.
2019-09-06Add RFC2822 (email style) formatted dates to to date(1).Ori Bernstein
2019-09-04kernel: get rid of tmperrbuf and use syserrstr swapping instead in namec()cinap_lenrek
2019-09-04rune(2): complete source referencescinap_lenrek