allow xfs_args_allocate to fail
PATCH 6/10 allow xfs_args_allocate to fail
Switch xfs_args_allocate to kzalloc and handle failures.
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/linux-2.6/xfs_super.c +17 -6
@@ -75,7 +75,10 @@ xfs_args_allocate( {struct xfs_mount_args *args; - args =kmem_zalloc (sizeof (struct xfs_mount_args ),KM_SLEEP ); + args =kzalloc (sizeof (struct xfs_mount_args ),GFP_KERNEL ); +if (!args) +return NULL ; + args->logbufs = args->logbufsize =-1 ;strncpy (args->fsname, sb->s_id,MAXNAMELEN );
@@ -1396,9 +1399,13 @@ xfs_fs_remount( char *options) {struct xfs_mount *mp =XFS_M (sb); -struct xfs_mount_args *args =xfs_args_allocate (sb,0 ); +struct xfs_mount_args *args;int error; + args =xfs_args_allocate (sb,0 ); +if (!args) +return -ENOMEM ; + error =xfs_parseargs (mp, options, args,1 );if (error) goto out_free_args;
@@ -1420,7 +1427,7 @@ xfs_fs_remount( } out_free_args: -kmem_free (args,sizeof (*args)); +kfree (args);return -error; }
@@ -1725,9 +1732,13 @@ xfs_fs_fill_super( {struct inode *root;struct xfs_mount *mp =NULL ; -struct xfs_mount_args *args =xfs_args_allocate (sb, silent); +struct xfs_mount_args *args;int flags =0 , error; + args =xfs_args_allocate (sb, silent); +if (!args) +return -ENOMEM ; + mp =xfs_mount_init ();INIT_LIST_HEAD (&mp->m_sync_list);
@@ -1827,7 +1838,7 @@ xfs_fs_fill_super(xfs_itrace_exit (XFS_I (sb->s_root->d_inode)); -kmem_free (args,sizeof (*args)); +kfree (args);return 0 ; error2:
@@ -1875,7 +1886,7 @@ xfs_fs_fill_super(kmem_free (mp,sizeof (xfs_mount_t)); fail_vfsop: -kmem_free (args,sizeof (*args)); +kfree (args);return -error; }
Quoted 3 lines · Christoph Hellwig
Switch
xfs_args_allocateto kzalloc and handle failures.Signed-off-by Christoph Hellwig <[email protected]>
Respin ontop of the kmem_free signature change:
fs/xfs/linux-2.6/xfs_super.c +17 -6
@@ -75,7 +75,10 @@ xfs_args_allocate( {struct xfs_mount_args *args; - args =kmem_zalloc (sizeof (struct xfs_mount_args ),KM_SLEEP ); + args =kzalloc (sizeof (struct xfs_mount_args ),GFP_KERNEL ); +if (!args) +return NULL ; + args->logbufs = args->logbufsize =-1 ;strncpy (args->fsname, sb->s_id,MAXNAMELEN );
@@ -1396,9 +1399,13 @@ xfs_fs_remount( char *options) {struct xfs_mount *mp =XFS_M (sb); -struct xfs_mount_args *args =xfs_args_allocate (sb,0 ); +struct xfs_mount_args *args;int error; + args =xfs_args_allocate (sb,0 ); +if (!args) +return -ENOMEM ; + error =xfs_parseargs (mp, options, args,1 );if (error) goto out_free_args;
@@ -1420,7 +1427,7 @@ xfs_fs_remount( } out_free_args: -kmem_free (args); +kfree (args);return -error; }
@@ -1725,9 +1732,13 @@ xfs_fs_fill_super( {struct inode *root;struct xfs_mount *mp =NULL ; -struct xfs_mount_args *args =xfs_args_allocate (sb, silent); +struct xfs_mount_args *args;int flags =0 , error; + args =xfs_args_allocate (sb, silent); +if (!args) +return -ENOMEM ; + mp =xfs_mount_init ();INIT_LIST_HEAD (&mp->m_sync_list);
@@ -1827,7 +1838,7 @@ xfs_fs_fill_super(xfs_itrace_exit (XFS_I (sb->s_root->d_inode)); -kmem_free (args); +kfree (args);return 0 ; error2:
@@ -1875,7 +1886,7 @@ xfs_fs_fill_super(kmem_free (mp); fail_vfsop: -kmem_free (args); +kfree (args);return -error; }