panic by unlocking of mutex in KLD

Alexej Sokolov bsd.quest at googlemail.com
Mon Jan 12 05:48:00 PST 2009


Hello, 

by unloading of folowing module  I have kernel panic.

I would like to get any explanation about my mistake.

#include <sys/param.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/queue.h>
#include <sys/kernel.h>
#include <sys/kobj.h>
#include <sys/malloc.h>
#include <sys/types.h>
#include <sys/lock.h>
#include <sys/mutex.h>


struct mtx my_mtx; 


/* Load handler */
static int
load(struct module *mod, int cmd, void *arg)
{
        int error = 0; 
        switch(cmd) {
                case MOD_LOAD:
                        printf("Start! Addres of mutex = 0x%X \n",
&my_mtx);
                        mtx_init(&my_mtx, "My mutex name", "My mutex
type", MTX_DEF);

                        mtx_lock(&my_mtx);
                        break;
                case MOD_UNLOAD:
                        printf("Stop! Addres of mutex = 0x%X \n",
&my_mtx);
                        mtx_unlock(&my_mtx);
                        break;
                default:
                        error = EOPNOTSUPP;
                        break;
        }

        return (error);
}

/* Module structure */
static moduledata_t mod_data = {
        "mymod",
        load,
        NULL
};
MODULE_VERSION (kld, 1);
DECLARE_MODULE (kld, mod_data, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); 


Thanx

-- 
Alexej Sokolov <bsd.quest at googlemail.com>


More information about the freebsd-hackers mailing list