All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Unsafe MODULE_ usage in crc32.c
@ 2002-12-01  0:12 Matt Reppert
  2002-12-01  0:25 ` Petr Vandrovec
  2002-12-02 13:31 ` Arnd Bergmann
  0 siblings, 2 replies; 4+ messages in thread
From: Matt Reppert @ 2002-12-01  0:12 UTC (permalink / raw)
  To: linux-kernel

Hi,

Okay, I know, it's just a library module, doesn't need to ever be unloaded
anyway. But error noise in dmesg annoys me, hence this patch.

Matt

  Convert CRC32 to try_module_get; fixes an unsafe usage that
  prevents unloading.


 lib/crc32.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletion(-)

--- linux-2.5.50/lib/crc32.c~crc32-unsafe	2002-11-30 05:31:19.000000000 -0600
+++ linux-2.5.50-arashi/lib/crc32.c	2002-11-30 05:36:17.000000000 -0600
@@ -551,7 +551,10 @@ static int __init init_crc32(void)
 	rc1 = crc32init_le();
 	rc2 = crc32init_be();
 	rc = rc1 || rc2;
-	if (!rc) MOD_INC_USE_COUNT;
+	if (!rc) {
+		if (!try_module_get(THIS_MODULE))
+			rc = -1;
+	}
 	return rc;
 }
 

[patch ends]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Unsafe MODULE_ usage in crc32.c
  2002-12-01  0:12 [PATCH] Unsafe MODULE_ usage in crc32.c Matt Reppert
@ 2002-12-01  0:25 ` Petr Vandrovec
  2002-12-02 13:31 ` Arnd Bergmann
  1 sibling, 0 replies; 4+ messages in thread
From: Petr Vandrovec @ 2002-12-01  0:25 UTC (permalink / raw)
  To: Matt Reppert; +Cc: linux-kernel, rusty

On Sat, Nov 30, 2002 at 06:12:24PM -0600, Matt Reppert wrote:
> Hi,
> 
> Okay, I know, it's just a library module, doesn't need to ever be unloaded
> anyway. But error noise in dmesg annoys me, hence this patch.
 
Better asking Rusty, why module cannot call MOD_INC_USE_COUNT on itself
during its own init... I'm pretty sure that crc32 module knows that nobody
can unload it at this point: it is executing its own code, isn't it?
					Petr Vandrovec
					vandrove@vc.cvut.cz

> Matt
> 
>   Convert CRC32 to try_module_get; fixes an unsafe usage that
>   prevents unloading.
> 
> 
>  lib/crc32.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletion(-)
> 
> --- linux-2.5.50/lib/crc32.c~crc32-unsafe	2002-11-30 05:31:19.000000000 -0600
> +++ linux-2.5.50-arashi/lib/crc32.c	2002-11-30 05:36:17.000000000 -0600
> @@ -551,7 +551,10 @@ static int __init init_crc32(void)
>  	rc1 = crc32init_le();
>  	rc2 = crc32init_be();
>  	rc = rc1 || rc2;
> -	if (!rc) MOD_INC_USE_COUNT;
> +	if (!rc) {
> +		if (!try_module_get(THIS_MODULE))
> +			rc = -1;
> +	}
>  	return rc;
>  }
>  
> 
> [patch ends]
> -
> 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/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Unsafe MODULE_ usage in crc32.c
  2002-12-01  0:12 [PATCH] Unsafe MODULE_ usage in crc32.c Matt Reppert
  2002-12-01  0:25 ` Petr Vandrovec
@ 2002-12-02 13:31 ` Arnd Bergmann
  2002-12-02 16:08   ` Alan Cox
  1 sibling, 1 reply; 4+ messages in thread
From: Arnd Bergmann @ 2002-12-02 13:31 UTC (permalink / raw)
  To: Matt Reppert, linux-kernel

Matt Reppert wrote:

> Okay, I know, it's just a library module, doesn't need to ever be unloaded
> anyway. But error noise in dmesg annoys me, hence this patch.

I don't think you even need to set the use count at all for crc32:
As long as another module is using it, you can't unload it because
the exported symbols are used. When those symbols are not known
to other modules, it is also safe to unload crc32.

I noticed another small problem with init_crc: if crc32init_be()
fails, the memory allocated by crc32init_le() is never freed,
see below.

	Arnd <><

--- 1.5/lib/crc32.c	Mon Apr  8 22:22:00 2002
+++ edited/lib/crc32.c	Mon Dec  2 14:25:37 2002
@@ -547,11 +547,13 @@
  */
 static int __init init_crc32(void)
 {
-	int rc1, rc2, rc;
-	rc1 = crc32init_le();
-	rc2 = crc32init_be();
-	rc = rc1 || rc2;
-	if (!rc) MOD_INC_USE_COUNT;
+	int rc;
+	rc = crc32init_le();
+	if (rc)
+		return rc;
+	rc = crc32init_be();
+	if (rc)
+		crc32cleanup_le();
 	return rc;
 }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Unsafe MODULE_ usage in crc32.c
  2002-12-02 13:31 ` Arnd Bergmann
@ 2002-12-02 16:08   ` Alan Cox
  0 siblings, 0 replies; 4+ messages in thread
From: Alan Cox @ 2002-12-02 16:08 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Matt Reppert, Linux Kernel Mailing List

On Mon, 2002-12-02 at 13:31, Arnd Bergmann wrote:
> I noticed another small problem with init_crc: if crc32init_be()
> fails, the memory allocated by crc32init_le() is never freed,
> see below.

The -ac tree solves that by compiling in the table. Saves on boot up
time too 8)


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-12-02 15:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-12-01  0:12 [PATCH] Unsafe MODULE_ usage in crc32.c Matt Reppert
2002-12-01  0:25 ` Petr Vandrovec
2002-12-02 13:31 ` Arnd Bergmann
2002-12-02 16:08   ` Alan Cox

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.