Patchwork move dereference after null check

login
register
mail settings
Submitter Dan Carpenter
Date Nov. 10, 2009, 8:55 a.m.
Message ID <alpine.DEB.2.00.0911081949070.11108@bicker>
Download mbox | patch
Permalink /patch/38046/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Dan Carpenter - Nov. 10, 2009, 8:55 a.m.
I moved the ops->inherits dereference below the null check.  I moved the 
other assignment as well so that they would be together.

Found by smatch static checker.

regards,
dan carpenter

Signed-off-by: Dan Carpenter <error27@gmail.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Bottomley - Nov. 10, 2009, 2:19 p.m.
On Tue, 2009-11-10 at 10:55 +0200, Dan Carpenter wrote:
> I moved the ops->inherits dereference below the null check.  I moved the 
> other assignment as well so that they would be together.
> 
> Found by smatch static checker.
> 
> regards,
> dan carpenter
> 
> Signed-off-by: Dan Carpenter <error27@gmail.com>
> 
> --- orig/drivers/ata/libata-core.c	2009-11-08 19:40:18.000000000 +0200
> +++ devel/drivers/ata/libata-core.c	2009-11-08 19:42:06.000000000 +0200
> @@ -5938,13 +5938,14 @@
>  {
>  	static DEFINE_SPINLOCK(lock);
>  	const struct ata_port_operations *cur;
> -	void **begin = (void **)ops;
> -	void **end = (void **)&ops->inherits;

There's no problem here: this isn't a dereference.

James

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

--- orig/drivers/ata/libata-core.c	2009-11-08 19:40:18.000000000 +0200
+++ devel/drivers/ata/libata-core.c	2009-11-08 19:42:06.000000000 +0200
@@ -5938,13 +5938,14 @@ 
 {
 	static DEFINE_SPINLOCK(lock);
 	const struct ata_port_operations *cur;
-	void **begin = (void **)ops;
-	void **end = (void **)&ops->inherits;
-	void **pp;
+	void **begin, **end, **pp;
 
 	if (!ops || !ops->inherits)
 		return;
 
+	begin = (void **)ops;
+	end = (void **)&ops->inherits;
+
 	spin_lock(&lock);
 
 	for (cur = ops->inherits; cur; cur = cur->inherits) {