Age | Commit message (Collapse) | Author |
|
* mach-defpager/main.c (main): Do not hang if the child dies.
|
|
Previously, the device file was opened once at startup time. This is
fragile, as the remote server might die. Open it at device open time
instead.
* boot/boot.c (options): Improve documentation.
(struct dev_map): Rename fields, document, store the name of the
device file instead of a port.
(add_dev_map): Update accordingly.
(lookup_dev): Likewise.
(ds_device_open): Open the device file here instead.
|
|
Previously, the ethernet multiplexer generated ethernet addresses for
the virtual interfaces using a pseudo-random number generator. This
has the downside of generating a new address every time. Generate
stable pseudo-random addresses instead.
* eth-multiplexer/Makefile (HURDLIBS): Link to libihash.
* eth-multiplexer/ethernet.c (ether_address): New variable.
(get_ethernet_address): New function.
(ethernet_open): Get the ethernet address of the real interface.
* eth-multiplexer/ethernet.h (ether_address): New declaration.
* eth-multiplexer/vdev.c (add_vdev): Compute the ethernet address by
hashing the address of the real interface with the name of the virtual
interface.
|
|
* eth-multiplexer/util.h: Include 'net/if_ether.h'.
(ETH_ALEN): Drop.
(struct ethhdr): Likewise.
* eth-multiplexer/vdev.c: Include 'net/if_ether.h'.
(ETH_HLEN): Drop.
|
|
Previously, the ethernet multiplexer returned the status of the real
network device if one was configured. This had the unfortunate
consequence that all virtual devices shared the same ethernet address.
* eth-multiplexer/device_impl.c (ds_device_get_status): Always return
the information for the virtual device.
* eth-multiplexer/vdev.h (dev_getstat): Add prototype.
|
|
* eth-multiplexer/vdev.c (deliver_msg): Do not return an error if
delivering a message fails. Doing so prevents all other filters from
being executed, and more importantly aborts the iteration over all
virtual devices.
|
|
* Makefile (prog-subdirs): Add the new program.
* NEWS: Update.
* eth-multiplexer/ChangeLog: New file.
* eth-multiplexer/Makefile: Likewise.
* eth-multiplexer/README: Likewise.
* eth-multiplexer/demuxer.c: Likewise.
* eth-multiplexer/dev_stat.c: Likewise.
* eth-multiplexer/device_impl.c: Likewise.
* eth-multiplexer/ethernet.c: Likewise.
* eth-multiplexer/ethernet.h: Likewise.
* eth-multiplexer/mig-decls.h: Likewise.
* eth-multiplexer/mig-mutate.h: Likewise.
* eth-multiplexer/multiplexer.c: Likewise.
* eth-multiplexer/netfs_impl.c: Likewise.
* eth-multiplexer/netfs_impl.h: Likewise.
* eth-multiplexer/notify_impl.c: Likewise.
* eth-multiplexer/test.c: Likewise.
* eth-multiplexer/util.h: Likewise.
* eth-multiplexer/vdev.c: Likewise.
* eth-multiplexer/vdev.h: Likewise.
The eth-multiplexer has been written by Zheng Da. This merges his
work into the main repository.
|
|
* Makefile (lib-subdirs): Add new library.
* NEWS: Update.
* libbpf/Makefile: New file.
* libbpf/bpf_impl.c: Likewise.
* libbpf/bpf_impl.h: Likewise.
* libbpf/queue.c: Likewise.
* libbpf/queue.h: Likewise.
* libbpf/util.h: Likewise.
The Berkeley Packet Filter implementation has been extracted from the
Mach kernel by Zheng Da. This merges his work into the main
repository.
|
|
* boot/boot.c (S_mach_notify_new_task): The send rights are now indeed
moved to the target task, adjust accordingly.
* proc/mgt.c (S_mach_notify_new_task): Likewise.
|
|
* boot/boot.c (options): Group options together. Do not end help
texts with a colon.
(args_doc): Remove variable.
(main): Group the store options together.
|
|
* boot/boot.c (OPT_BOOT_SCRIPT): New macro.
(options): Add flag '--boot-script'.
(args_doc): Do not expect the script as positional argument.
(parse_opt): Handle new flag, do not expect the script as positional
argument.
(read_boot_script): New function.
(default_boot_script): New variable containing a boot script capable
of booting contemporary Hurd systems.
(main): Use the new function to read the boot script, or fall back to
using the builtin one.
|
|
Previously, boot handed privileged kernel ports to Subhurds. This
made boot unusable for unprivileged users, and allowed Subhurds to
wreak havoc on the whole system. Fix this by handing out pseudo ports
instead of the privileged ports.
* NEWS: Update.
* boot/Makefile (MIGSTUBS): Build stubs for the new kernel interfaces.
(MIGSFLAGS): Include mutation file.
(HURDLIBS): Link against libihash.
* boot/boot.c (privileged, want_privileged): New variables.
(pseudo_privileged_host_port): New variable.
(pseudo_pset, pseudo_kernel): Likewise.
(task_notification_port): Likewise.
(dead_task_notification_port): Likewise.
(boot_demuxer): Handle new protocols.
(OPT_PRIVILEGED): New macro.
(options): Add flag '--privileged' to enable the old mode.
(parse_opt): Handle new flag.
(allocate_pseudo_ports): New function.
(main): Handle new flag. If not running privileged, allocate more
pseudo ports to hand out in place of privileged kernel ports, create a
task namespace, and a task that the Subhurd can frob instead of the
real kernel task.
(do_mach_notify_dead_name): Handle dying tasks.
(S_vm_set_default_memory_manager): New function.
(S_host_reboot): Likewise.
(S_host_processor_set_priv): Likewise.
(S_register_new_task_notification): Likewise.
(task_ihash_cleanup): Likewise.
(task_ihash): New variable.
(task_died): New function.
(S_mach_notify_new_task): Likewise.
(S_processor_set_tasks): Likewise.
* boot/mig-decls.h: New file.
* boot/mig-mutate.h: Likewise.
|
|
* boot/boot.c (host_exit): Make it a function and restore the terminal state.
|
|
* boot/boot.c (useropen, load_image, boot_script_exec_cmd): Move...
* boot/userland-boot.c: ... here.
|
|
* boot/boot.c (boot_script_exec_cmd): Quote arguments containing
spaces.
|
|
* boot/userland-boot.c (boot_script_insert_right): Use the smallest
possible name instead of the local name.
|
|
* startup/startup.c (dump_processes): New function.
(frob_kerne_process): Use the new function.
|
|
Thanks Agustina Arzille for the report
* ext2fs/ext2fs.h (global_lock, modified_global_blocks_lock): Declare
extern
* ext2fs/ext2fs.c (global_lock, modified_global_blocks_lock): Define and
initialize to PTHREAD_SPINLOCK_INITIALIZER.
* libtreefs/xinl.c (treefs_node_refcnt_lock): Likewise.
|
|
* boot/Makefile (COMMON-OBJS): Do not build server stubs for the
bootstrap protocol.
Remove all UX-related variables and targets.
* boot/boot.c: Remove all UX-related definitions and includes.
* boot/frank1.ld: Delete file.
* boot/frankemul.ld: Likewise.
* boot/mach-crt0.c: Likewise.
* boot/sigvec.S: Likewise.
* boot/syscall.S: Likewise.
* boot/ux.c: Likewise.
* boot/ux.h: Likewise.
|
|
* proc/mgt.c (S_mach_notify_new_task): Fix receiver handling, fix port
leak.
* proc/mig-mutate.h: Mutate the task notification protocol.
|
|
* libdiskfs/node-lastref.c: New file
* libdiskfs/Makefile (OTHERSRCS): Add node-lastref.c
* libdiskfs/libdiskfs/node-nput.c (diskfs_nput): Replace last hard reference
code with a call to _diskfs_lastref.
* libdiskfs/node-nrele.c (diskfs_nrele): Likewise.
|
|
Follow-up on 5ab5d98fa515cd19a64e8d5868fcbae85eec9dc5 ('libdiskfs: fix
removal of socket nodes'), for diskfs_nrele.
* libdiskfs/node-nrele.c (diskfs_nrele): Deallocate right to socket
address when cleaning light references.
|
|
So that static linking of e.g. console.static can work.
* libdiskfs/io-stubs.c (diskfs_S_io_readsleep, diskfs_S_io_eofnotify,
diskfs_S_io_postnotify, diskfs_S_io_readnotify): Mark weak.
* libnetfs/fsstubs.c (netfs_S_file_notice_changes, netfs_S_file_getfh,
netfs_S_ifsock_getsockaddr): Likewise.
* libnetfs/fsysstubs.c (netfs_S_fsys_getfile: netfs_S_fsys_getpriv,
netfs_S_fsys_init, netfs_S_fsys_forward, netfs_S_fsys_startup):
Likewise.
* libpager/stubs.c (_pager_S_memory_object_copy,
_pager_S_memory_object_data_write,
_pager_S_memory_object_supply_completed): Likewise.
* libtrivfs/fsys-stubs.c (trivfs_S_fsys_startup, trivfs_S_fsys_getpriv,
trivfs_S_fsys_init, trivfs_S_fsys_getfile): Likewise.
* libtrivfs/io-stubs.c (trivfs_S_io_map_cntl, trivfs_S_io_get_conch,
trivfs_S_io_release_conch, trivfs_S_io_eofnotify, trivfs_S_io_prenotify,
trivfs_S_io_postnotify, trivfs_S_io_readsleep, trivfs_S_io_sigio,
trivfs_S_io_readnotify): Likewise.
|
|
to work around improper handling of getting paged out.
* console/display.c (user_create): Call vm_wire() on the created user data.
|
|
* utils/rpctrace.c: Fix typo.
|
|
Thanks Kalle Olavi Niemitalo for the notice.
* libdiskfs/file-utimes.c (diskfs_S_file_utimes): Call diskfs_set_node_times
before setting node timestamps.
|
|
* libdiskfs/node-nrele.c (diskfs_nrele): Call diskfs_set_node_times when
there are no hard refs any more, like diskfs_nput does.
|
|
* boot/boot.c (main): Ignore EINTR in the loop processing stdin.
|
|
* libports/manage-multithread.c (adjust_priorities): Avoid displaying
error messages if we do not have the privileged processor set port by
treating this error condition like EPERM.
* proc/main.c (increase_priority, main): Likewise.
|
|
* procfs/rootdir.c (rootdir_gc_meminfo): Just omit the swap
information if the default pager is unreachable.
|
|
by fixing the subsystem name into containing _request.
* hurd/auth_request.defs: Set subsystem name to auth_request.
* hurd/io_request.defs: Set subsystem name to io_request.
* hurd/process_request.defs: Set subsystem name to process_request.
|
|
* libfshelp/fetch-control.c (fshelp_fetch_control): Check if the
control port is still alive, or deallocate the dead name, record the
fact in the transbox, and return MACH_PORT_NULL.
|
|
* console-client/trans.c (console_setup_node): Remove 'bootstrap'.
|
|
* ext2fs/ext2fs.h (disk_cache_block_deref): Replace with a macro that
NULLs the given pointer.
(dino_deref): Likewise.
* ext2fs/pager.c (disk_cache_block_deref): Rename.
* ext2fs/pokel.c (pokel_add): Adapt.
(pokel_exec): Likewise.
|
|
* ext2fs/ext2fs.h (sync_global_pointer): Rename 'bptr' so that it
doesn't collide with the macro 'bptr'.
|
|
* trans/crash.c (corefile_template_lock): New variable.
(S_crash_dump_task): Serialize access to 'corefile_template'.
(parse_opt): Likewise. Also strdup the template.
(trivfs_append_args): Serialize access to 'corefile_template'.
|
|
* trans/crash.c (parse_opt): Use empty core file templates to disable
the feature.
|
|
* trans/crash.c (parse_opt): Avoid 'error' in favor of the appropriate
argp error reporting mechanism.
* trans/remap.c (parse_opt): Likewise.
* utils/msgids.c (parse_opt): Likewise.
|
|
* ext2fs/ext2fs.c (options): Disable '--sblock', this has never been
implemented.
(parse_opt): Likewise.
|
|
* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): When
setting a short-circuited translator, clear the translator record
first. Improve error handling.
This notably fixes a crash in ext2fs when setting a symlink on a node
with an existing translator record.
|
|
* utils/fakeroot.sh (FAKED_MODE): Set to unknown-is-root.
|
|
* random/gnupg-random.c (mix_pool): Store the first hash at the end of
the pool.
--
This fixes a long standing bug (since 1998) in Libgcrypt and GnuPG.
An attacker who obtains 580 bytes of the random number from the
standard RNG can trivially predict the next 20 bytes of output.
The bug was found and reported by Felix Dörre and Vladimir Klebanov,
Karlsruhe Institute of Technology. A paper describing the problem in
detail will shortly be published.
This is a port of c6dbfe89 from the GnuPG classic branch.
CVE-id: CVE-2016-6313
|
|
* init/init.c (main): Run /libexec/runsystem.hurd instead of
/etc/hurd/runsystem.hurd.
|
|
* daemons/runsystem.hurd: Rename to daemons/runsystem.hurd.sh
* daemons/Makefile (targets): Add runsystem.hurd
(special-targets): Likewise.
(runsystem.hurd): New rule, simply depends on runsystem.hurd.sh
|
|
* libfshelp/translator-list.c (translator_ihash_cleanup): Release reference.
(fshelp_set_active_translator): Acquire reference
|
|
* startup/startup.c (launch_something): Always increment TRY even on
success, so that if runsystem unexpectedly returns, we get to try a shell
instead.
|
|
Thanks Brent W. Baccala for the report.
* starpu/startup.c (launch_something): Always increment TRY while looping
over runsystem possibilities.
|
|
Falling back from the io_map method needs to handle the "anywhere" flag too
by updating MAPSTART.
* exec/exec.c (write_to_task): Turn MAPSTART parameter into a reference to
the address. Fix usage accordingly.
(load_section): Pass address of MAPSTART to write_to_task so it can update
it.
|
|
It is just a warning, not a fatal error.
* libdiskfs/init-startup.c (_diskfs_init_completed): Prefix warning about
requesting shutdown nofication with "warning:".
* random/random.c (main): Likewise.
|
|
or called with a small array.
This notably happens when using a sub-exec, see BZ #48919.
* exec/hashexec.c (check_hashbang): Check std_nports before accessing
std_ports.
|