forked from luck/tmp_suning_uos_patched
This pull request contains changes for UBIFS
- Kernel-doc fixes - Fixes for memory leaks in authentication option parsing -----BEGIN PGP SIGNATURE----- iQJKBAABCAA0FiEEdgfidid8lnn52cLTZvlZhesYu8EFAl+LRSgWHHJpY2hhcmRA c2lnbWEtc3Rhci5hdAAKCRBm+VmF6xi7wZU7EACGIvNIUvPl35GhUxRP7EBGOVdz LPonjtBiipeuvIXnwviqzYcCwFJ2a5xFel4pEs3J58AYb9D6++qShgrSw7/g815Z aEcLDAuSTkYIj9HzmI03xObe4UHtGoIXpHTj2e8vzq/doJMEXYtZeWzKyMW9IvgJ dU4Lq1ZvNNaYpiaglE9ThJUG6oXT3rnHkWR/uFf0MOh2kZ6pH6U8QAGUTZp9ZdCF Tzy1ruDS7+ZEox7j7cIBhrmN6NyaSk/I4C9tBisRxDRNZ/ku9b6URd384DKxvli1 8otLLYBxWypqx4FF0qF2Gyp7ZYGWDcnxLHgrmpafmsbwMqnOrOwjSD+whVKLdJqm B2nXzxRw6BNDqViAxQ+K/KISoZq4w3/dREPgvBzjypiDKkYtJ6MksTj4Mbw514b6 iUjaKpGVMZF8PIjTxn/YWrbxR6UV/On+mbHs94FTyanldRw1GG9UcrcL5TyhaXj0 WeVhBiU4Aui+vwtBtdPCY1sf6iBE3x40P7tTWe6/CPgc7pE1InVU3ex0517gyEls yY0JFVQPNeMIc9C/g12GbDiMA328FSxcCLKd+2+h3PAgcMd+RPvynHxIL5g9hxMC GRFUGERxCVHU2VkrOpXA8P6Z3u3Lu9kZkz4UP1dMU+5tiBcw0xN0Ks9TvZm8s/WV lGyhX9r+kpfNUiq4hQ== =/Spl -----END PGP SIGNATURE----- Merge tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs Pull ubifs updates from Richard Weinberger: - Kernel-doc fixes - Fixes for memory leaks in authentication option parsing * tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs: ubifs: mount_ubifs: Release authentication resource in error handling path ubifs: Don't parse authentication mount options in remount process ubifs: Fix a memleak after dumping authentication mount options ubifs: Fix some kernel-doc warnings in tnc.c ubifs: Fix some kernel-doc warnings in replay.c ubifs: Fix some kernel-doc warnings in gc.c ubifs: Fix 'hash' kernel-doc warning in auth.c
This commit is contained in:
commit
a96fd1cc3f
|
@ -54,7 +54,7 @@ static int ubifs_hash_calc_hmac(const struct ubifs_info *c, const u8 *hash,
|
|||
* ubifs_prepare_auth_node - Prepare an authentication node
|
||||
* @c: UBIFS file-system description object
|
||||
* @node: the node to calculate a hash for
|
||||
* @hash: input hash of previous nodes
|
||||
* @inhash: input hash of previous nodes
|
||||
*
|
||||
* This function prepares an authentication node for writing onto flash.
|
||||
* It creates a HMAC from the given input hash and writes it to the node.
|
||||
|
|
|
@ -57,10 +57,6 @@
|
|||
/**
|
||||
* switch_gc_head - switch the garbage collection journal head.
|
||||
* @c: UBIFS file-system description object
|
||||
* @buf: buffer to write
|
||||
* @len: length of the buffer to write
|
||||
* @lnum: LEB number written is returned here
|
||||
* @offs: offset written is returned here
|
||||
*
|
||||
* This function switch the GC head to the next LEB which is reserved in
|
||||
* @c->gc_lnum. Returns %0 in case of success, %-EAGAIN if commit is required,
|
||||
|
|
|
@ -931,8 +931,6 @@ static int add_replay_bud(struct ubifs_info *c, int lnum, int offs, int jhead,
|
|||
* validate_ref - validate a reference node.
|
||||
* @c: UBIFS file-system description object
|
||||
* @ref: the reference node to validate
|
||||
* @ref_lnum: LEB number of the reference node
|
||||
* @ref_offs: reference node offset
|
||||
*
|
||||
* This function returns %1 if a bud reference already exists for the LEB. %0 is
|
||||
* returned if the reference node is new, otherwise %-EINVAL is returned if
|
||||
|
|
|
@ -1110,14 +1110,20 @@ static int ubifs_parse_options(struct ubifs_info *c, char *options,
|
|||
break;
|
||||
}
|
||||
case Opt_auth_key:
|
||||
c->auth_key_name = kstrdup(args[0].from, GFP_KERNEL);
|
||||
if (!c->auth_key_name)
|
||||
return -ENOMEM;
|
||||
if (!is_remount) {
|
||||
c->auth_key_name = kstrdup(args[0].from,
|
||||
GFP_KERNEL);
|
||||
if (!c->auth_key_name)
|
||||
return -ENOMEM;
|
||||
}
|
||||
break;
|
||||
case Opt_auth_hash_name:
|
||||
c->auth_hash_name = kstrdup(args[0].from, GFP_KERNEL);
|
||||
if (!c->auth_hash_name)
|
||||
return -ENOMEM;
|
||||
if (!is_remount) {
|
||||
c->auth_hash_name = kstrdup(args[0].from,
|
||||
GFP_KERNEL);
|
||||
if (!c->auth_hash_name)
|
||||
return -ENOMEM;
|
||||
}
|
||||
break;
|
||||
case Opt_ignore:
|
||||
break;
|
||||
|
@ -1141,6 +1147,18 @@ static int ubifs_parse_options(struct ubifs_info *c, char *options,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* ubifs_release_options - release mount parameters which have been dumped.
|
||||
* @c: UBIFS file-system description object
|
||||
*/
|
||||
static void ubifs_release_options(struct ubifs_info *c)
|
||||
{
|
||||
kfree(c->auth_key_name);
|
||||
c->auth_key_name = NULL;
|
||||
kfree(c->auth_hash_name);
|
||||
c->auth_hash_name = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* destroy_journal - destroy journal data structures.
|
||||
* @c: UBIFS file-system description object
|
||||
|
@ -1313,7 +1331,7 @@ static int mount_ubifs(struct ubifs_info *c)
|
|||
|
||||
err = ubifs_read_superblock(c);
|
||||
if (err)
|
||||
goto out_free;
|
||||
goto out_auth;
|
||||
|
||||
c->probing = 0;
|
||||
|
||||
|
@ -1325,18 +1343,18 @@ static int mount_ubifs(struct ubifs_info *c)
|
|||
ubifs_err(c, "'compressor \"%s\" is not compiled in",
|
||||
ubifs_compr_name(c, c->default_compr));
|
||||
err = -ENOTSUPP;
|
||||
goto out_free;
|
||||
goto out_auth;
|
||||
}
|
||||
|
||||
err = init_constants_sb(c);
|
||||
if (err)
|
||||
goto out_free;
|
||||
goto out_auth;
|
||||
|
||||
sz = ALIGN(c->max_idx_node_sz, c->min_io_size) * 2;
|
||||
c->cbuf = kmalloc(sz, GFP_NOFS);
|
||||
if (!c->cbuf) {
|
||||
err = -ENOMEM;
|
||||
goto out_free;
|
||||
goto out_auth;
|
||||
}
|
||||
|
||||
err = alloc_wbufs(c);
|
||||
|
@ -1611,6 +1629,8 @@ static int mount_ubifs(struct ubifs_info *c)
|
|||
free_wbufs(c);
|
||||
out_cbuf:
|
||||
kfree(c->cbuf);
|
||||
out_auth:
|
||||
ubifs_exit_authentication(c);
|
||||
out_free:
|
||||
kfree(c->write_reserve_buf);
|
||||
kfree(c->bu.buf);
|
||||
|
@ -1650,8 +1670,7 @@ static void ubifs_umount(struct ubifs_info *c)
|
|||
ubifs_lpt_free(c, 0);
|
||||
ubifs_exit_authentication(c);
|
||||
|
||||
kfree(c->auth_key_name);
|
||||
kfree(c->auth_hash_name);
|
||||
ubifs_release_options(c);
|
||||
kfree(c->cbuf);
|
||||
kfree(c->rcvrd_mst_node);
|
||||
kfree(c->mst_node);
|
||||
|
@ -2221,6 +2240,7 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
|
|||
out_unlock:
|
||||
mutex_unlock(&c->umount_mutex);
|
||||
out_close:
|
||||
ubifs_release_options(c);
|
||||
ubi_close_volume(c->ubi);
|
||||
out:
|
||||
return err;
|
||||
|
|
|
@ -360,7 +360,6 @@ static int lnc_add_directly(struct ubifs_info *c, struct ubifs_zbranch *zbr,
|
|||
/**
|
||||
* lnc_free - remove a leaf node from the leaf node cache.
|
||||
* @zbr: zbranch of leaf node
|
||||
* @node: leaf node
|
||||
*/
|
||||
static void lnc_free(struct ubifs_zbranch *zbr)
|
||||
{
|
||||
|
@ -3466,7 +3465,7 @@ int ubifs_dirty_idx_node(struct ubifs_info *c, union ubifs_key *key, int level,
|
|||
/**
|
||||
* dbg_check_inode_size - check if inode size is correct.
|
||||
* @c: UBIFS file-system description object
|
||||
* @inum: inode number
|
||||
* @inode: inode to check
|
||||
* @size: inode size
|
||||
*
|
||||
* This function makes sure that the inode size (@size) is correct and it does
|
||||
|
|
Loading…
Reference in New Issue
Block a user