Unverified Commit 12e18800 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!8504 CVE: CVE-2024-36015

Merge Pull Request from: @ci-robot 
 
PR sync from: Chen Ridong <chenridong@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/6HZLGPLHZCD6AT3BRGURUB2MUME3FQIN/ 
*** BLURB HERE ***

Christophe JAILLET (1):
  ppdev: Remove usage of the deprecated ida_simple_xx() API

Huai-Yuan Liu (1):
  ppdev: Add an error check in register_device


-- 
2.34.1
 
https://gitee.com/src-openeuler/kernel/issues/I9T6MM 
 
Link:https://gitee.com/openeuler/kernel/pulls/8504

 

Reviewed-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parents 425be667 51f738b9
Loading
Loading
Loading
Loading
+14 −7
Original line number Original line Diff line number Diff line
@@ -296,28 +296,35 @@ static int register_device(int minor, struct pp_struct *pp)
	if (!port) {
	if (!port) {
		pr_warn("%s: no associated port!\n", name);
		pr_warn("%s: no associated port!\n", name);
		rc = -ENXIO;
		rc = -ENXIO;
		goto err;
		goto err_free_name;
	}

	index = ida_alloc(&ida_index, GFP_KERNEL);
	if (index < 0) {
		pr_warn("%s: failed to get index!\n", name);
		rc = index;
		goto err_put_port;
	}
	}


	index = ida_simple_get(&ida_index, 0, 0, GFP_KERNEL);
	memset(&ppdev_cb, 0, sizeof(ppdev_cb));
	memset(&ppdev_cb, 0, sizeof(ppdev_cb));
	ppdev_cb.irq_func = pp_irq;
	ppdev_cb.irq_func = pp_irq;
	ppdev_cb.flags = (pp->flags & PP_EXCL) ? PARPORT_FLAG_EXCL : 0;
	ppdev_cb.flags = (pp->flags & PP_EXCL) ? PARPORT_FLAG_EXCL : 0;
	ppdev_cb.private = pp;
	ppdev_cb.private = pp;
	pdev = parport_register_dev_model(port, name, &ppdev_cb, index);
	pdev = parport_register_dev_model(port, name, &ppdev_cb, index);
	parport_put_port(port);


	if (!pdev) {
	if (!pdev) {
		pr_warn("%s: failed to register device!\n", name);
		pr_warn("%s: failed to register device!\n", name);
		rc = -ENXIO;
		rc = -ENXIO;
		ida_simple_remove(&ida_index, index);
		ida_free(&ida_index, index);
		goto err;
		goto err_put_port;
	}
	}


	pp->pdev = pdev;
	pp->pdev = pdev;
	pp->index = index;
	pp->index = index;
	dev_dbg(&pdev->dev, "registered pardevice\n");
	dev_dbg(&pdev->dev, "registered pardevice\n");
err:
err_put_port:
	parport_put_port(port);
err_free_name:
	kfree(name);
	kfree(name);
	return rc;
	return rc;
}
}
@@ -750,7 +757,7 @@ static int pp_release(struct inode *inode, struct file *file)


	if (pp->pdev) {
	if (pp->pdev) {
		parport_unregister_device(pp->pdev);
		parport_unregister_device(pp->pdev);
		ida_simple_remove(&ida_index, pp->index);
		ida_free(&ida_index, pp->index);
		pp->pdev = NULL;
		pp->pdev = NULL;
		pr_debug(CHRDEV "%x: unregistered pardevice\n", minor);
		pr_debug(CHRDEV "%x: unregistered pardevice\n", minor);
	}
	}