mirror of https://gitee.com/openkylin/linux.git
[MTD] fix use after free in register_mtd_blktrans
Reported-by: Dan Carpenter <error27@gmail.com> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
61dd7eb876
commit
2cf3a11494
|
@ -382,11 +382,12 @@ int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
|
||||||
tr->blkcore_priv->thread = kthread_run(mtd_blktrans_thread, tr,
|
tr->blkcore_priv->thread = kthread_run(mtd_blktrans_thread, tr,
|
||||||
"%sd", tr->name);
|
"%sd", tr->name);
|
||||||
if (IS_ERR(tr->blkcore_priv->thread)) {
|
if (IS_ERR(tr->blkcore_priv->thread)) {
|
||||||
|
int ret = PTR_ERR(tr->blkcore_priv->thread);
|
||||||
blk_cleanup_queue(tr->blkcore_priv->rq);
|
blk_cleanup_queue(tr->blkcore_priv->rq);
|
||||||
unregister_blkdev(tr->major, tr->name);
|
unregister_blkdev(tr->major, tr->name);
|
||||||
kfree(tr->blkcore_priv);
|
kfree(tr->blkcore_priv);
|
||||||
mutex_unlock(&mtd_table_mutex);
|
mutex_unlock(&mtd_table_mutex);
|
||||||
return PTR_ERR(tr->blkcore_priv->thread);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT_LIST_HEAD(&tr->devs);
|
INIT_LIST_HEAD(&tr->devs);
|
||||||
|
|
Loading…
Reference in New Issue