All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Williams <Aaron.Williams@cavium.com>
To: linux-kernel@vger.kernel.org
Cc: "Williams, Aaron" <Aaron.Williams@caviumnetworks.com>
Subject: Incrementing module reference count
Date: Fri, 07 Dec 2012 17:14:39 -0800	[thread overview]
Message-ID: <50C2947F.5030706@cavium.com> (raw)

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)


             reply	other threads:[~2012-12-08  1:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-08  1:14 Aaron Williams [this message]
2012-12-08 11:44 ` Incrementing module reference count Borislav Petkov
2012-12-08 19:17   ` Aaron Williams
2012-12-09 11:55     ` Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50C2947F.5030706@cavium.com \
    --to=aaron.williams@cavium.com \
    --cc=Aaron.Williams@caviumnetworks.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.