Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753292AbWLOTha (ORCPT ); Fri, 15 Dec 2006 14:37:30 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753295AbWLOTha (ORCPT ); Fri, 15 Dec 2006 14:37:30 -0500 Received: from caramon.arm.linux.org.uk ([217.147.92.249]:2655 "EHLO caramon.arm.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753292AbWLOTh3 (ORCPT ); Fri, 15 Dec 2006 14:37:29 -0500 Date: Fri, 15 Dec 2006 19:37:17 +0000 From: Russell King To: Anderson Briglia Cc: "Lizardo Anderson (EXT-INdT/Manaus)" , Pierre Ossman , linux-kernel@vger.kernel.org, "Aguiar Carlos (EXT-INdT/Manaus)" , Tony Lindgren , ext David Brownell Subject: Re: [PATCH 4/4] Add MMC Password Protection (lock/unlock) support V8: mmc_sysfs.diff Message-ID: <20061215193717.GA10367@flint.arm.linux.org.uk> Mail-Followup-To: Anderson Briglia , "Lizardo Anderson (EXT-INdT/Manaus)" , Pierre Ossman , linux-kernel@vger.kernel.org, "Aguiar Carlos (EXT-INdT/Manaus)" , Tony Lindgren , ext David Brownell References: <45748173.2050008@indt.org.br> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45748173.2050008@indt.org.br> User-Agent: Mutt/1.4.2.1i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1829 Lines: 50 On Mon, Dec 04, 2006 at 04:13:39PM -0400, Anderson Briglia wrote: > Implement MMC password force erase, remove password, change password, > unlock card and assign password operations. It uses the sysfs mechanism > to send commands to the MMC subsystem. Sorry, this is still unsuitable for mainline. > Signed-off-by: Carlos Eduardo Aguiar indt.org.br> > Signed-off-by: Anderson Lizardo indt.org.br> > Signed-off-by: Anderson Briglia indt.org.br> Please use the standard format, do not obfuscate these. The kernel community utterly abhors this. > +/* > + * implement MMC password functions: force erase, remove password, change > + * password, unlock card and assign password. > + */ > +static ssize_t > +mmc_lockable_store(struct device *dev, struct device_attribute *att, > + const char *data, size_t len) > +{ > + struct mmc_card *card = dev_to_mmc_card(dev); > + int err = 0; Where is the check that the host can do byte-wise data transfers? > + > + err = mmc_card_claim_host(card); > + if (err != MMC_ERR_NONE) > + return -EINVAL; > + > + if (!mmc_card_lockable(card)) > + return -EINVAL; So writing to this file with a card which is not lockable results in deadlocking the host. Suggest you do as other subsystems do and have one exit path, and use gotos, setting the appropriate return code in a variable. If everything goes via that it forces you to think about where you want to jump to in each case. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/