Commit bbcf9af6 authored by Wolfram Sang's avatar Wolfram Sang Committed by Jassi Brar
Browse files

mailbox: mailbox-test: initialize struct earlier



The waitqueue must be initialized before the debugfs files are created
because from that time, requests from userspace can already be made.
Similarily, drvdata and spinlock needs to be initialized before we
request the channel, otherwise dangling irqs might run into problems
like a NULL pointer exception.

Fixes: 8ea4484d ("mailbox: Add generic mechanism for testing Mailbox Controllers")
Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: default avatarJassi Brar <jassisinghbrar@gmail.com>
parent 88ebadbf
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -382,6 +382,12 @@ static int mbox_test_probe(struct platform_device *pdev)
	if (!tdev)
		return -ENOMEM;

	tdev->dev = &pdev->dev;
	spin_lock_init(&tdev->lock);
	mutex_init(&tdev->mutex);
	init_waitqueue_head(&tdev->waitq);
	platform_set_drvdata(pdev, tdev);

	/* It's okay for MMIO to be NULL */
	tdev->tx_mmio = mbox_test_ioremap(pdev, 0);

@@ -400,12 +406,6 @@ static int mbox_test_probe(struct platform_device *pdev)
	if (!tdev->rx_channel && (tdev->rx_mmio != tdev->tx_mmio))
		tdev->rx_channel = tdev->tx_channel;

	tdev->dev = &pdev->dev;
	platform_set_drvdata(pdev, tdev);

	spin_lock_init(&tdev->lock);
	mutex_init(&tdev->mutex);

	if (tdev->rx_channel) {
		tdev->rx_buffer = devm_kzalloc(&pdev->dev,
					       MBOX_MAX_MSG_LEN, GFP_KERNEL);
@@ -419,7 +419,6 @@ static int mbox_test_probe(struct platform_device *pdev)
	if (ret)
		goto err_free_chans;

	init_waitqueue_head(&tdev->waitq);
	dev_info(&pdev->dev, "Successfully registered\n");

	return 0;