]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ocfs2/localalloc.c
Merge tag 'for-linus' of git://github.com/openrisc/linux
[linux.git] / fs / ocfs2 / localalloc.c
index f03674afbd30ed3a737a8e5747fa8e25f7c79bb5..158e5af767fd11119b39947586cdb364f4c6a6d2 100644 (file)
@@ -424,12 +424,11 @@ void ocfs2_shutdown_local_alloc(struct ocfs2_super *osb)
        bh = osb->local_alloc_bh;
        alloc = (struct ocfs2_dinode *) bh->b_data;
 
-       alloc_copy = kmalloc(bh->b_size, GFP_NOFS);
+       alloc_copy = kmemdup(alloc, bh->b_size, GFP_NOFS);
        if (!alloc_copy) {
                status = -ENOMEM;
                goto out_commit;
        }
-       memcpy(alloc_copy, alloc, bh->b_size);
 
        status = ocfs2_journal_access_di(handle, INODE_CACHE(local_alloc_inode),
                                         bh, OCFS2_JOURNAL_ACCESS_WRITE);
@@ -1272,13 +1271,12 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb,
         * local alloc shutdown won't try to double free main bitmap
         * bits. Make a copy so the sync function knows which bits to
         * free. */
-       alloc_copy = kmalloc(osb->local_alloc_bh->b_size, GFP_NOFS);
+       alloc_copy = kmemdup(alloc, osb->local_alloc_bh->b_size, GFP_NOFS);
        if (!alloc_copy) {
                status = -ENOMEM;
                mlog_errno(status);
                goto bail;
        }
-       memcpy(alloc_copy, alloc, osb->local_alloc_bh->b_size);
 
        status = ocfs2_journal_access_di(handle,
                                         INODE_CACHE(local_alloc_inode),