lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 07 Dec 2012 17:14:39 -0800
From:	Aaron Williams <Aaron.Williams@...ium.com>
To:	linux-kernel@...r.kernel.org
CC:	"Williams, Aaron" <Aaron.Williams@...iumnetworks.com>
Subject: Incrementing module reference count

Hi,

I have a kernel module which other modules register with in order to 
export access functions. So far I have everything working but I want to 
prevent a module that is registered with my module from unloading since 
now my module is dependent on the other module.

Is there a way I can cause the reference count of the module registering 
with my module to increase? I tried calling get_device with the device 
structure of the module that is registering but that does not seem to work.

For example, I have the following function:

/**
  * Adds a mapping of a device node to a memory accessor
  *
  * @param[in] dev - device
  * @param[in] macc - memory accessor
  *
  * @returns 0 for success or -ENOMEM
  */
int of_memory_accessor_register(struct device *dev,
                 struct memory_accessor *macc)
{
     struct of_macc_entry *mentry;

     mentry = kmalloc(sizeof(*mentry), GFP_KERNEL);
     if (mentry == NULL)
         return -ENOMEM;

     mentry->dev = dev;
     mentry->macc = macc;

     mutex_lock(&lock);

     get_device(dev);
     list_add(&(mentry->list), &macc_list);

     mutex_unlock(&lock);

     return 0;
}
EXPORT_SYMBOL(of_memory_accessor_register);

Basically my module is used for things like serial EEPROMs and whatnot 
so that external modules can find the accessor functions based on the 
device tree. In my case I am updating the Vitesse VSC848X driver so that 
it can read the SFP module when it is plugged in using the AT24 I2C 
EEPROM module. I want to prevent the at24 module from unloading while 
other modules in turn are using it. The at24 module does not export any 
symbols.

NOTE that I plan to change the above code so that I only increment the 
eeprom modules reference count when another module actually uses it and 
release it only when all other modules are no longer using the accessor 
functions.

I also am not subscribed to the LKML so please CC me on any responses.

-Aaron

-- 
Aaron Williams
Software Engineer
Cavium, Inc.
(408) 943-7198  (510) 789-8988 (cell)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ