[Ocfs2-devel] [PATCH 1/2] Ocfs2: Need to initialize uuid when setuping the osb.
Sunil Mushran
sunil.mushran at oracle.com
Mon Nov 30 14:07:31 PST 2009
Tristan Ye wrote:
> I accidently found this when adding new ioctls for ocfs2
> to request fs info from none-prvileged users.
>
> ocfs2_super osb has successfully setuped osb.uuid_str, but
> it did leave the osb.uuid field NULL without proper initializing
> and bytes filling, it should be corrected I guess.
>
> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
> ---
> fs/ocfs2/super.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index c0e48ae..f15fea7 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -1920,6 +1920,12 @@ static int ocfs2_setup_osb_uuid(struct ocfs2_super *osb, const unsigned char *uu
>
> BUG_ON(uuid_bytes != OCFS2_VOL_UUID_LEN);
>
> + osb->uuid = kzalloc(OCFS2_VOL_UUID_LEN, GFP_KERNEL);
> + if (osb->uuid == NULL)
> + return -ENOMEM;
> +
> + memmove(osb->uuid, uuid, OCFS2_VOL_UUID_LEN);
>
memmove() is an overkill when we know the areas do not overlap.
Use memcpy().
> +
> osb->uuid_str = kzalloc(OCFS2_VOL_UUID_LEN * 2 + 1, GFP_KERNEL);
> if (osb->uuid_str == NULL)
> return -ENOMEM;
> @@ -2415,6 +2421,7 @@ static void ocfs2_delete_osb(struct ocfs2_super *osb)
> kfree(osb->journal);
> if (osb->local_alloc_copy)
> kfree(osb->local_alloc_copy);
> + kfree(osb->uuid);
> kfree(osb->uuid_str);
> ocfs2_put_dlm_debug(osb->osb_dlm_debug);
> memset(osb, 0, sizeof(struct ocfs2_super));
>
So we only use the string representation of the uuid. So I see no
use of this. Maybe we should just remove osb->uuid.
More information about the Ocfs2-devel
mailing list