summaryrefslogtreecommitdiff
path: root/ChangeLog
AgeCommit message (Collapse)Author
2009-06-18 * linux/src/drivers/block/triton.c (ide_init_triton): Enable BusSamuel Thibault
Mastering if not enabled by BIOS.
2009-06-182007-12-30 Samuel thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/dev/glue/block.c (MAX_BUF): Set to sane stack-friendly 8 instead of blindly following VM_MAP_COPY_PAGE_LIST_MAX. (rdwr_full): increment blk by cc >> bshift instead of nb.
2009-06-182007-12-30 Samuel thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* kern/debug.c (panic) [MACH_KDB]: Don't wait before running the debugger.
2009-06-182007-12-11 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/include/linux/nfs.h: Remove unused file. * linux/src/include/linux/nfs.h: Likewise.
2009-06-182007-12-10 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/Makefrag.am (i386/i386at/boothdr.o, i386/i386at/interrupt.o) (i386/i386/cswitch.o, i386/i386/locore.o): Remove targets. * configure.ac <Dependency tracking for `.S' files>: Add a hack to re-add the four targets with have been removed above for the (legacy) case only where they are actually needed.
2009-06-182007-12-05 Guillem Jover <guillem@hadrons.org>Samuel Thibault
* i386/Makefrag.am (i386/i386at/interrupt.o): New target, depends on i386/i386/i386asm.h (i386/i386/cswitch.o): Likewise. (i386/i386/locore.o): Likewise.
2009-06-182007-11-18 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/intel/pmap.c (pmap_map_bd): Use INTEL_PTE_NCACHE|INTEL_PTE_WTHRU. Get pmap lock.
2009-06-182007-11-15 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* ddb/db_examine.c (db_strcpy): Add extra parentheses around assignment used as boolean. * ddb/db_sym.c (db_qualify, db_lookup): Likewise.
2009-06-182007-11-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* doc/mach.texi: Do the copyright and licensing things as suggested by the GNU Texinfo manual.
2009-06-182007-10-09 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/glue/net.c (device_open) <LINUX_IFF_ALLMULTI>: Comment.
2009-06-182007-10-08 Stefan Siegl <stesie@brokenpipe.de>Stefan Siegl
* linux/dev/glue/net.c (device_open): Set LINUX_IFF_ALLMULTI flag on device and propagate.
2009-06-182007-10-02 Samuel Thibault <samuel.thibault@ens-lyon.org>Thomas Schwinge
* kern/zalloc.c (zget_space): Fix last change.
2009-06-182007-09-03 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* kern/zalloc.c (zget_space): Align zalloc_next_space again after calling kmem_alloc_wired (which may sleep).
2009-06-182007-08-16 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* Makefile.am (clib_routines): Add udivdi3, __udivdi3 and _end. Fix edata into _edata. (gnumach-undef): Do not remove heading _s. (clib-routines.o): Add -lgcc.
2009-06-182007-07-09 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/db_interface.c (int_regs): Drop gs and fs fields. (kdb_kentry): Get fs and gs from struct i386_interrupt_state instead of struct int_regs. * i386/i386/kttd_interface.c (int_regs, kttd_netentry): Likewise. * i386/i386/locore.S (all_intrs): Save fs and gs and set them to kernel segment too. (return_to_iret): Restore fs and gs too. (return_to_iret_i): Likewise. (ast_from_interrupt): Set fs and gs to kernel segment too. (kdb_from_iret): Don't save/restore fs and gs either. (ttd_from_iret): Likewise. * i386/i386/thread.h (i386_interrupt_state): Add gs and fs fields. * linux/src/include/asm-i386/irq.h (SAVE_ALL): Set gs to kernel segment too.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/dev/arch/i386/kernel/irq.c: Include <asm/hardirq.h>. (local_bh_count, local_irq_count, global_irq_holder, global_irq_lock) (global_irq_count, check_smp_invalidate, show, wait_on_bh) (wait_on_irq, synchronize_bh, synchronize_irq, get_irqlock) (__global_cli, __global_sti, __global_save_flags) (__global_restore_flags): New variables and functions from Linux 2.2 * linux/src/drivers/net/3c515.c (test_and_set_bit): Remove macro. * linux/src/drivers/net/de4x5.c (test_and_set_bit): Remove macro. * linux/src/drivers/net/eth16i.c (test_and_set_bit): Remove macro. * linux/src/drivers/net/kern_compat.h (test_and_set_bit): Remove macro. * linux/src/drivers/net/pcnet32.c (test_and_set_bit): Remove macro. * linux/src/include/linux/compatmac.h (test_and_set_bit) (test_and_clear_bit): Remove macro. * linux/src/include/asm-i386/atomic.h (atomic_read): New macro. * linux/src/include/asm-i386/bitops.h (test_and_set_bit) (test_and_clear_bit, test_and_change_bit): New inline functions. * linux/src/include/asm-i386/hardirq.h (local_bh_count): New declaration. * linux/src/include/linux/tasks.h (NR_CPUS): Set to NCPUS. (NO_PROC_ID): New macro.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* configfrag.ac (mach_ncpus): Define to 1. (NCPUS): Set to $mach_ncpus. [$mach_ncpus > 1] (MULTIPROCESSOR): Set to 1. * linux/configfrag.ac [$mach_ncpus > 1] (__SMP__): Define.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/dev/include/asm-i386/system.h: Update to Linux 2.2 for SMP.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/pcmcia-cs/modules/cs_internal.h: Use __SMP__ instead of USE_SPIN_LOCKS. * linux/pcmcia-cs/modules/i82365.c: Likewise. * linux/pcmcia-cs/modules/rsrc_mgr.c: Likewise.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/dev/init/main.c [__SMP__ && __i386] (smp_loops_per_tick): Restore variable.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* linux/dev/include/asm-i386/smp.h: New file.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/linux/dev/include/linux/autoconf.h [NCPUS > 1]: Define CONFIG_SMP and __SMP__.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/mp_desc.c: (cpu_control, interrupt_processor, cpu_start) (start_other_cpus): New functions. * i386/i386/i386asm.sym (MP_GDT, MP_IDT): Remove macros. * i386/i386/lock.h: Don't include_next "lock.h".
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386at/model_dep.c: Make init_alloc_aligned() extern.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/cswitch.S: Use EXT(interrupt_stack) instead of _interrupt_stack.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/mp_desc.c (interrupt_stack_alloc): Call init_alloc_aligned() instead of init_alloc().
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/io_perm.c (i386_io_perm_create): Lock io_perm->port, not inexistent device->port. * i386/i386/mp_desc.c: Include <machine/vm_param.h> * i386/i386/mp_desc.h: Include <i386at/idt.h> instead of "idt.h"
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/locore.S (current_tstamp, TIME_TRAP_UENTRY, TIME_TRAP_SENTRY, TIME_TRAP_UEXIT) (TIME_INT_ENTRY, TIME_INT_EXIT, timer_switch, start_timer): Use EXT(current_tstamp) and EXT(current_timer) instead of _current_tstampt and _current_timer.
2009-06-182007-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/locore.S (TIME_TRAP_UENTRY, TIME_TRAP_SENTRY) (TIME_TRAP_UEXIT): Use TH_SYSTEM_TIMER instead of old TH_SYS_TIMER.
2009-06-182007-07-08 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/seg.h (SZ_64): New macro. * i386/i386/user_ldt.c (selector_check, i386_set_gdt): Check user-provided descriptor against SZ_64.
2009-06-182007-07-04 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/intel/pmap.c (pmap_enter): Use INTEL_PTE_NCACHE|INTEL_PTE_WTHRU when cpu >= 486 and physical address is after memory end.
2009-06-182007-06-23 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/trap.c (user_trap): Read faulting linear address before using it.
2009-06-18Elaborate.Thomas Schwinge
2009-06-182007-06-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makerules.mig.am: New file, factored out of code of... * Makefrag.am: ... this file and... * Makerules.am: ... this file. * i386/Makefrag.am: Update comment.
2009-06-182007-06-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makefile.am (MIGFLAGS): Remove. (MIGCOM): Add ``-n''. * Makerules.am: Adapt to that.
2009-06-182007-05-09 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* include/mach/mach_types.defs (userprefix, serverprefix): Set, if requested.
2009-06-182007-05-08 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/fpu.c (fpu_set_state): Set fp_valid to TRUE. Free the unused ifps.
2009-06-182007-05-07 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[bug #15295 --- ``Mach lets processes write to I/O ports''] * i386/Makefrag.am (libkernel_a_SOURCES): Add `i386/i386/io_perm.c', `i386/i386/io_perm.h', `i386/i386/machine_task.c', `i386/i386/task.h' and remove `i386/i386/io_port.h', `i386/i386/iopb.c', `i386/i386/iopb.h'. * i386/i386/io_port.h: Remove file. * i386/i386at/kd.c: Don't include <i386/io_port.h>. (vga_port_list, kd_io_device, kd_io_map_open, kd_io_map_close): Don't define and don't use anymore. * include/stddef.h: New file. * i386/i386/io_perm.c: Include <string.h>, <device/device_emul.h>, <ipc/ipc_space.h> and don't include <oskit/ds_oskit.h>. (io_perm_device_emulation_ops): New variable. (dev_open_alloc, setup_no_senders): Remove declarations. (convert_io_perm_to_port, convert_port_to_io_perm, io_perm_deallocate): Rewrite. (no_senders): New function. (i386_io_perm_create, i386_io_perm_modify): Rewrite partially, to adapt to the GNU Mach environment. * i386/i386/io_perm.h: Include <device/dev_hdr.h> and <ipc/ipc_types.h>. (io_perm, io_perm_t): New structure and accompanying type definition. (IO_PERM_NULL): Define. * i386/i386/locore.S (ktss): Move variable to... * i386/i386/ktss.c: ... here, make it a ``struct task_tss''. (ktss_init): Initialize the `task_tss' structure and the i/o permission bit map. * i386/i386/ktss.h: Adapt to that. * i386/i386/machine_task.c (machine_task_module_init): Adapt the `zinit' call to the GNU Mach environment. * i386/i386/mp_desc.c: Include <machine/ktss.h>. * i386/i386/tss.h: Include <machine/io_perm.h>. (task_tss): New structure, equivalent to the OSKit-Mach one. * i386/include/mach/i386/mach_i386.defs: Don't include <device/device_types.defs>. (device_list_t): Remove type. * i386/include/mach/i386/mach_i386_types.h (device_list_t): Remove type definition. 2007-05-07 Marcus Brinkmann <marcus@gnu.org> [bug #15295 --- ``Mach lets processes write to I/O ports''] * i386/i386/iopb.h, i386/i386/iopb.c: Obsolete files removed. * i386/i386/pcb.c (switch_context): Update the I/O permission bitmap from stack_handoff() here (not only in stack_handoff()). * i386/i386/machine_task.c (machine_task_module_init): Set ZONE_COLLECTABLE and ZONE_EXHAUSTIBLE flags for the iopb zone. Requested by Roland McGrath <roland@frob.com>. * i386/i386/io_perm.h: New file. * i386/i386/io_perm.c: New file. * i386/i386/machine_task.c: New file. * i386/i386/mp_desc.h: (struct mp_desc_table): Change type of ktss to struct task_tss. (mp_ktss): Likewise for array of pointers to the struct. * i386/i386/mp_desc.c: Include `machine/tss.h' and `machine/io_perm.h'. (mp_ktss): Change type to array of struct task_tss. (mp_desc_init): Cast pointer to x86_tss into pointer to task_tss, and use size of struct task_tss instead size of struct x86_tss. Initialize the task_tss structure. * i386/i386/pcb.c: Include `stddef.h' and `machine/tss.h'. (iopb_create, iopb_destroy): Prototypes removed. (curr_ktss): Cast pointer to base_tss to pointer to struct task_tss. (switch_ktss): Always use kernel TSS. (update_ktss_iopb): New function. (stack_handoff): Call update_ktss_iopb. (pcb_module_init): Do not call iopb_init. (pcb_terminate): Do not call iopb_destroy. (thread_setstatus): Remove local variable tss. (thread_getstatus): Rewrite i386_ISA_PORT_MAP_STATE case handler. * i386/i386/task.h: New file. * i386/i386/thread.h: Do not include `i386/iopb.h'. (struct i386_machine_state): Remove member io_tss. * i386/include/mach/i386/mach_i386.defs [KERNEL_SERVER]: Include `machine/io_perm.h'. Define intran, outtran and destructor. (io_port_t): New type. (io_perm_t): Likewise. (i386_io_port_add): Interface removed. (i386_io_port_remove): Likewise. (i386_io_port_list): Likewise. (i386_io_perm_create): New interface. (i386_io_perm_modify): Likewise. * i386/include/mach/i386/mach_i386_types.h [MACH_KERNEL]: Include `i386/io_perm.h'. [!MACH_KERNEL]: Define types io_port_t and io_perm_t. * kern/task.c (task_init): Call machine_task_module_init. (task_create): Call machine_task_init. (task_deallocate): Call machine_task_terminate. (task_collect_scan): Call machine_task_collect. * task.h: Include `machine/task.h'. (struct task): Add member machine.
2009-06-182007-05-06 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* device/kmsg.c: Include <device/ds_routines.h>. (kmsg_lock): Use `decl_simple_lock_data'. (kmsgread, kmsg_read_done): Add two typecasts.
2009-06-182007-05-06 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* device/buf.h (minphys): Add return type. * device/device_types_kernel.h: We're not in the eighties anymore... * device/io_req.h: Likewise.
2009-06-182007-05-05 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/i386at/model_dep.c (halt_cpu, halt_all_cpus): Call `machine_idle' to avoid busy-looping.
2009-06-182007-05-05 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/intel/read_fault.c (intel_read_fault): Remove the last parameter from the calls of `vm_map_lookup'.
2009-06-182007-05-05 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
We're not in the eighties anymore. List arguments in function prototypes and definitions for a lot of symbols. Also drop some unused prototypes. I refrain from listing every changed symbol. * vm/memory_object.c: Do as described. * vm/memory_object.h: Likewise. * vm/pmap.h: Likewise. * vm/vm_external.c: Likewise. * vm/vm_external.h: Likewise. * vm/vm_fault.c: Likewise. * vm/vm_fault.h: Likewise. * vm/vm_kern.h: Likewise. * vm/vm_map.c: Likewise. * vm/vm_map.h: Likewise. * vm/vm_pageout.h: Likewise. * vm/vm_user.h: Likewise. * vm/memory_object.h: Include <ipc/ipc_types.h>. * vm/pmap.h: Include <kern/thread.h>. * vm/vm_fault.h: Include <mach/vm_prot.h>, <vm/vm_map.h> and <vm/vm_types.h>. * vm/vm_map.h: Include <mach/vm_attributes.h> and <vm/vm_types.h>. (vm_map_t, VM_MAP_NULL): Remove type and definition. * vm/vm_object.h (vm_object_t, VM_OBJECT_NULL): Remove type and definition. * vm/vm_page.h: Include <vm/vm_types.h>. (vm_page_t, VM_PAGE_NULL): Remove type and definition. * vm/vm_user.h: Include <mach/std_types.h>. * kern/task.h: Include <vm/vm_types.h> instead of <vm/vm_map.h>. * vm/vm_types.h: New file: the above-removed types and definitions.
2009-06-182007-05-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* configure.ac (--disable-default-device-drivers): Transform into... (--enable-device-drivers): ... this new option and extend it. * i386/configfrag.ac (--enable-lpr): Adapt to that. * linux/configfrag.ac (AC_OPTION_Linux_ix86_at, AC_Linux_DRIVER): Likewise. (AC_Linux_DRIVER_qemu): New definition. Use it for the `floppy', `ide' and `ne' device drivers. * doc/mach.texi: Document all that.
2009-06-182007-05-01 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* assigns: Remove file. See `copyright.list' on the GNU server instead.
2009-06-182007-04-30 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
We're not in the eighties anymore. List arguments in function prototypes and definitions for a lot of symbols. Also drop some unused prototypes. I refrain from listing every changed symbol. * include/mach/mach_traps.h: Do as described. * device/dev_hdr.h: Include <ipc/ipc_types.h>. * kern/syscall_subr.h: Include <kern/kern_types.h>.
2009-06-182007-04-30 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
We're not in the eighties anymore. List arguments in function prototypes and definitions for a lot of symbols. Also drop some unused prototypes. I refrain from listing every changed symbol. * chips/busses.h: Do as described. * ddb/db_break.c: Likewise. * ddb/db_break.h: Likewise. * ddb/db_command.c: Likewise. * ddb/db_command.h: Likewise. * ddb/db_lex.c: Likewise. * ddb/db_lex.h: Likewise. * ddb/db_output.c: Likewise. * ddb/db_output.h: Likewise. * ddb/db_sym.h: Likewise. * ddb/db_task_thread.c: Likewise. * ddb/db_task_thread.h: Likewise. * ddb/db_variables.h: Likewise. * ddb/db_watch.c: Likewise. * ddb/db_watch.h: Likewise. * device/buf.h: Likewise. * device/conf.h: Likewise. * device/dev_hdr.h: Likewise. * device/ds_routines.h: Likewise. * device/if_ether.h: Likewise. * device/io_req.h: Likewise. * device/net_io.h: Likewise. * i386/i386/io_port.h: Likewise. * i386/i386/lock.h: Likewise. * i386/i386/mp_desc.c: Likewise. * i386/i386/mp_desc.h: Likewise. * i386/i386/proc_reg.h: Likewise. * i386/i386/user_ldt.h: Likewise. * i386/i386at/kd_queue.h: Likewise. * i386/i386at/kdsoft.h: Likewise. * i386/intel/pmap.c: Likewise. * i386/intel/pmap.h: Likewise. * include/mach/mach_traps.h: Likewise. * ipc/ipc_entry.h: Likewise. * ipc/ipc_hash.h: Likewise. * ipc/ipc_kmsg.h: Likewise. * ipc/ipc_marequest.c: Likewise. * ipc/ipc_marequest.h: Likewise. * ipc/ipc_mqueue.h: Likewise. * ipc/ipc_notify.h: Likewise. * ipc/ipc_object.h: Likewise. * ipc/ipc_port.h: Likewise. * ipc/ipc_pset.h: Likewise. * ipc/ipc_right.h: Likewise. * ipc/ipc_space.h: Likewise. * ipc/ipc_table.h: Likewise. * ipc/mach_msg.c: Likewise. * ipc/mach_msg.h: Likewise. * kern/ast.c: Likewise. * kern/ast.h: Likewise. * kern/debug.c: Likewise. * kern/debug.h: Likewise. * kern/ipc_tt.c: Likewise. * kern/ipc_tt.h: Likewise. * kern/mach_factor.c: Likewise. * kern/mach_factor.h: Likewise. * kern/printf.c: Likewise. * kern/printf.h: Likewise. * kern/queue.h: Likewise. * kern/sched.h: Likewise. * kern/syscall_subr.c: Likewise. * kern/syscall_subr.h: Likewise. * kern/task.h: Likewise. * kern/thread_swap.c: Likewise. * kern/thread_swap.h: Likewise. * kern/timer.h: Likewise. * kern/xpr.c: Likewise. * kern/xpr.h: Likewise. * kern/zalloc.c: Likewise. * kern/zalloc.h: Likewise. * ipc/ipc_port.h: Don't include <ipc/ipc_space.h>. * device/net_io.h: Include <device/if_hdr.h> and <device/io_req.h>. * ipc/ipc_entry.h: Include <mach/mach_types.h> and <ipc/ipc_types.h>. * ipc/ipc_kmsg.h: Include <ipc/ipc_object.h>, <ipc/ipc_types.h> and <vm/vm_map.h>. * ipc/ipc_marequest.h: Include <mach_debug/hash_info.h> and <ipc/ipc_types.h>. * ipc/ipc_object.h: Include <ipc/ipc_types.h>. * ipc/ipc_right.h: Include <ipc/ipc_entry.h>. * ipc/ipc_space.h: Include <mach/mach_types.h> and <ipc/ipc_types.h>. * kern/ipc_tt.h: Include <mach/mach_types.h>. * kern/sched.h: Include <kern/kern_types.h>. * ipc/ipc_hash.c (ipc_hash_index_t): Move type definition... * ipc/ipc_hash.h: ... into here.
2009-06-182007-04-25 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* DEVELOPMENT: Add url.
2009-06-182007-04-25 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[task #5878 --- ``Backport code from GNU Mach's trunk to gnumach-1-branch: i386_set_gdt, i386_get_gdt''] * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt): Shift by two to maintain rpc id compatibility with OSKit-Mach.
2009-06-182007-04-25 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/glue/kmem.c (vmalloc_list_remove): Cast the first argument in the `kfree' call to what is expected.