All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Anderson Briglia <anderson.briglia@indt.org.br>
Cc: linux-kernel@vger.kernel.org,
	"Linux-omap-open-source@linux.omap.com"
	<linux-omap-open-source@linux.omap.com>,
	linux@arm.linux.org.uk, ext David Brownell <david-b@PACBELL.NET>,
	Tony Lindgren <tony@atomide.com>,
	drzeus-list@drzeus.cx,
	"Aguiar Carlos (EXT-INdT/Manaus)" <carlos.aguiar@indt.org.br>,
	"Lizardo Anderson (EXT-INdT/Manaus)"
	<anderson.lizardo@indt.org.br>
Subject: Re: [patch 3/5] Add MMC password protection (lock/unlock) support V3
Date: Mon, 9 Jan 2006 22:42:04 +0000	[thread overview]
Message-ID: <20060109224204.GH19131@flint.arm.linux.org.uk> (raw)
In-Reply-To: <43C2E0A2.3090701@indt.org.br>

On Mon, Jan 09, 2006 at 06:16:02PM -0400, Anderson Briglia wrote:
> +	dev = bus_find_device(&mmc_bus_type, NULL, NULL, mmc_match_lockable);
> +	if (!dev)
> +		goto error;
> +	card = dev_to_mmc_card(dev);
> +	
> +	if (operation == KEY_OP_INSTANTIATE) { /* KEY_OP_INSTANTIATE */
> +               if (mmc_card_locked(card)) {
> +                       ret = mmc_lock_unlock(card, key, MMC_LOCK_MODE_UNLOCK);
> +                       mmc_remove_card(card);
> +                       mmc_register_card(card);
> +               }
> +	       else
> +		       ret = mmc_lock_unlock(card, key, MMC_LOCK_MODE_SET_PWD);

I really don't like this - if the MMC card is not locked, we set a
password on it.  If it's locked, we unlock it.

That's a potential race condition if you're trying to unlock a card
and the card is changed beneath you while you slept waiting for
memory - you end up setting that password on the new card.

It's far better to have separate "unlock this card" and "set a
password on this card" commands rather than trying to combine the
two operations.

Also, removing and re-registering a card is an offence.  These
things are ref-counted, and mmc_remove_card() will drop the last
reference - so the memory associated with it will be freed.  Then
you re-register it.  Whoops.

If you merely want to try to attach a driver, use device_attach()
instead.

Also, what if you have multiple MMC cards?  I have a board here
with two MMC slots.  I'd rather not have it try to set the same
password on both devices.


-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core

  reply	other threads:[~2006-01-09 22:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-09 22:16 [patch 3/5] Add MMC password protection (lock/unlock) support V3 Anderson Briglia
2006-01-09 22:16 ` Anderson Briglia
2006-01-09 22:42 ` Russell King [this message]
2006-01-10 21:45   ` Anderson Briglia
2006-01-11 13:58     ` Anderson Briglia
2006-01-11 14:45       ` Russell King

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=20060109224204.GH19131@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=anderson.briglia@indt.org.br \
    --cc=anderson.lizardo@indt.org.br \
    --cc=carlos.aguiar@indt.org.br \
    --cc=david-b@PACBELL.NET \
    --cc=drzeus-list@drzeus.cx \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap-open-source@linux.omap.com \
    --cc=linux@arm.linux.org.uk \
    --cc=tony@atomide.com \
    /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.