summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-10-28 02:50:28 -0800
committerJames Bottomley <jejb@mulgrave.(none)>2002-10-28 02:50:28 -0800
commit1bec5152a23e778ddafe587bdf9736a69346e633 (patch)
tree3f90f2ec8a319877a80a725b7c047a17be57e2cf /drivers/block
parent288ed82d5d91aa860a2de4b795d542121928429b (diff)
[PATCH] randomness made per-disk
* per-major array eliminated, every disk is a separate source of randomness
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/DAC960.c4
-rw-r--r--drivers/block/floppy.c2
-rw-r--r--drivers/block/genhd.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index dca532fef7a2..37e1713eeafb 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -3014,7 +3014,7 @@ static void DAC960_V1_ProcessCompletedCommand(DAC960_Command_T *Command)
complete(Command->Completion);
Command->Completion = NULL;
}
- add_blkdev_randomness(DAC960_MAJOR + Controller->ControllerNumber);
+ add_disk_randomness(Controller->disks[Command->LogicalDriveNumber]);
}
else if ((CommandStatus == DAC960_V1_IrrecoverableDataError ||
CommandStatus == DAC960_V1_BadDataEncountered) &&
@@ -4120,7 +4120,7 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)
complete(Command->Completion);
Command->Completion = NULL;
}
- add_blkdev_randomness(DAC960_MAJOR + Controller->ControllerNumber);
+ add_disk_randomness(Controller->disks[Command->LogicalDriveNumber]);
}
else if (Command->V2.RequestSense.SenseKey
== DAC960_SenseKey_MediumError &&
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 7206ab3847a5..ee44a5a62baf 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -2297,7 +2297,7 @@ static inline void end_request(struct request *req, int uptodate)
{
if (end_that_request_first(req, uptodate, current_count_sectors))
return;
- add_blkdev_randomness(MAJOR_NR);
+ add_disk_randomness(req->rq_disk);
floppy_off((int)req->rq_disk->private_data);
blkdev_dequeue_request(req);
end_that_request_last(req);
diff --git a/drivers/block/genhd.c b/drivers/block/genhd.c
index 24200d33cf0a..a7598b30a7ba 100644
--- a/drivers/block/genhd.c
+++ b/drivers/block/genhd.c
@@ -289,6 +289,7 @@ EXPORT_SYMBOL(disk_devclass);
static void disk_release(struct device *dev)
{
struct gendisk *disk = dev->driver_data;
+ kfree(disk->random);
kfree(disk->part);
kfree(disk);
}
@@ -316,6 +317,7 @@ struct gendisk *alloc_disk(int minors)
disk->disk_dev.driver_data = disk;
device_initialize(&disk->disk_dev);
}
+ rand_initialize_disk(disk);
return disk;
}