2014-02-26 02:32:53

by Zhang Zhen

[permalink] [raw]
Subject: [PATCH] ext2/3: use prandom_u32() instead of get_random_bytes()

Many of the uses of get_random_bytes() do not actually need
cryptographically secure random numbers. Replace those uses with a
call to prandom_u32(), which is faster and which doesn't consume
entropy from the /dev/random driver.

The commit dd1f723bf56bd96efc9d90e9e60dc511c79de48f has made that for
ext4, and i did the same for ext2/3.

Signed-off-by: Zhang Zhen <[email protected]>
---
fs/ext2/ialloc.c | 2 +-
fs/ext3/ialloc.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
index 7cadd82..32f131a 100644
--- a/fs/ext2/ialloc.c
+++ b/fs/ext2/ialloc.c
@@ -284,7 +284,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
int best_ndir = inodes_per_group;
int best_group = -1;

- get_random_bytes(&group, sizeof(group));
+ grp = prandom_u32();
parent_group = (unsigned)group % ngroups;
for (i = 0; i < ngroups; i++) {
group = (parent_group + i) % ngroups;
diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
index 082afd7..60e63e3 100644
--- a/fs/ext3/ialloc.c
+++ b/fs/ext3/ialloc.c
@@ -215,7 +215,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
int best_ndir = inodes_per_group;
int best_group = -1;

- get_random_bytes(&group, sizeof(group));
+ grp = prandom_u32();
parent_group = (unsigned)group % ngroups;
for (i = 0; i < ngroups; i++) {
group = (parent_group + i) % ngroups;
--
1.8.1.4


.






2014-02-26 11:08:17

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] ext2/3: use prandom_u32() instead of get_random_bytes()

On Wed 26-02-14 10:32:41, ZhangZhen wrote:
> Many of the uses of get_random_bytes() do not actually need
> cryptographically secure random numbers. Replace those uses with a
> call to prandom_u32(), which is faster and which doesn't consume
> entropy from the /dev/random driver.
>
> The commit dd1f723bf56bd96efc9d90e9e60dc511c79de48f has made that for
> ext4, and i did the same for ext2/3.
Thanks. I've merged the patch to my tree.

Honza

>
> Signed-off-by: Zhang Zhen <[email protected]>
> ---
> fs/ext2/ialloc.c | 2 +-
> fs/ext3/ialloc.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
> index 7cadd82..32f131a 100644
> --- a/fs/ext2/ialloc.c
> +++ b/fs/ext2/ialloc.c
> @@ -284,7 +284,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
> int best_ndir = inodes_per_group;
> int best_group = -1;
>
> - get_random_bytes(&group, sizeof(group));
> + grp = prandom_u32();
> parent_group = (unsigned)group % ngroups;
> for (i = 0; i < ngroups; i++) {
> group = (parent_group + i) % ngroups;
> diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
> index 082afd7..60e63e3 100644
> --- a/fs/ext3/ialloc.c
> +++ b/fs/ext3/ialloc.c
> @@ -215,7 +215,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
> int best_ndir = inodes_per_group;
> int best_group = -1;
>
> - get_random_bytes(&group, sizeof(group));
> + grp = prandom_u32();
> parent_group = (unsigned)group % ngroups;
> for (i = 0; i < ngroups; i++) {
> group = (parent_group + i) % ngroups;
> --
> 1.8.1.4
>
>
> .
>
>
>
>
--
Jan Kara <[email protected]>
SUSE Labs, CR