Commit b16931b1 authored by Michael Thalmeier's avatar Michael Thalmeier Committed by Samuel Ortiz
Browse files

NFC: pn533: fix order of initialization



Correctly call nfc_set_parent_dev before nfc_register_device.
Otherwise the driver will OOPS when being removed.

Signed-off-by: default avatarMichael Thalmeier <michael.thalmeier@hale.at>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 79f09fa7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -211,7 +211,8 @@ static int pn533_i2c_probe(struct i2c_client *client,
				     PN533_NO_TYPE_B_PROTOCOLS,
				     PN533_PROTO_REQ_ACK_RESP,
				     phy, &i2c_phy_ops, NULL,
				     &phy->i2c_dev->dev);
				     &phy->i2c_dev->dev,
				     &client->dev);

	if (IS_ERR(priv)) {
		r = PTR_ERR(priv);
+3 −1
Original line number Diff line number Diff line
@@ -2554,7 +2554,8 @@ struct pn533 *pn533_register_device(u32 device_type,
				void *phy,
				struct pn533_phy_ops *phy_ops,
				struct pn533_frame_ops *fops,
				struct device *dev)
				struct device *dev,
				struct device *parent)
{
	struct pn533_fw_version fw_ver;
	struct pn533 *priv;
@@ -2617,6 +2618,7 @@ struct pn533 *pn533_register_device(u32 device_type,
		goto destroy_wq;
	}

	nfc_set_parent_dev(priv->nfc_dev, parent);
	nfc_set_drvdata(priv->nfc_dev, priv);

	rc = nfc_register_device(priv->nfc_dev);
+2 −1
Original line number Diff line number Diff line
@@ -228,7 +228,8 @@ struct pn533 *pn533_register_device(u32 device_type,
				void *phy,
				struct pn533_phy_ops *phy_ops,
				struct pn533_frame_ops *fops,
				struct device *dev);
				struct device *dev,
				struct device *parent);

void pn533_unregister_device(struct pn533 *priv);
void pn533_recv_frame(struct pn533 *dev, struct sk_buff *skb, int status);
+1 −2
Original line number Diff line number Diff line
@@ -536,7 +536,7 @@ static int pn533_usb_probe(struct usb_interface *interface,

	priv = pn533_register_device(id->driver_info, protocols, protocol_type,
					phy, &usb_phy_ops, fops,
					&phy->udev->dev);
					&phy->udev->dev, &interface->dev);

	if (IS_ERR(priv)) {
		rc = PTR_ERR(priv);
@@ -544,7 +544,6 @@ static int pn533_usb_probe(struct usb_interface *interface,
	}

	phy->priv = priv;
	nfc_set_parent_dev(priv->nfc_dev, &interface->dev);

	usb_set_intfdata(interface, phy);