Browse Source

usb: feed USB device information to the /dev/random driver

Send the USB device's serial, product, and manufacturer strings to the
/dev/random driver to help seed its pools.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Acked-by: Greg KH <greg@kroah.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: stable@vger.kernel.org
Theodore Ts'o 13 years ago
parent
commit
b04b3156a2
1 changed files with 9 additions and 0 deletions
  1. 9 0
      drivers/usb/core/hub.c

+ 9 - 0
drivers/usb/core/hub.c

@@ -24,6 +24,7 @@
 #include <linux/kthread.h>
 #include <linux/kthread.h>
 #include <linux/mutex.h>
 #include <linux/mutex.h>
 #include <linux/freezer.h>
 #include <linux/freezer.h>
+#include <linux/random.h>
 
 
 #include <asm/uaccess.h>
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
 #include <asm/byteorder.h>
@@ -2173,6 +2174,14 @@ int usb_new_device(struct usb_device *udev)
 	/* Tell the world! */
 	/* Tell the world! */
 	announce_device(udev);
 	announce_device(udev);
 
 
+	if (udev->serial)
+		add_device_randomness(udev->serial, strlen(udev->serial));
+	if (udev->product)
+		add_device_randomness(udev->product, strlen(udev->product));
+	if (udev->manufacturer)
+		add_device_randomness(udev->manufacturer,
+				      strlen(udev->manufacturer));
+
 	device_enable_async_suspend(&udev->dev);
 	device_enable_async_suspend(&udev->dev);
 
 
 	/*
 	/*