Skip to content

Commit

Permalink
nfc: pn533: pn533_phy_ops dev_[up, down] return int
Browse files Browse the repository at this point in the history
Change dev_up and dev_down functions of struct pn533_phy_ops to return
int. This way the pn533 core can report errors in the phy layer to upper
layers.
The only user of this is currently uart.c and it is changed to report
the error of a possibly failing call to serdev_device_open.

Reported-by: coverity-bot <keescook+coverity-bot@chromium.org>
Addresses-Coverity-ID: 1487395 ("Error handling issues")
Fixes: c656aa4 ("nfc: pn533: add UART phy driver")
Signed-off-by: Lars Poeschel <poeschel@lemonage.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Lars Poeschel authored and David S. Miller committed Nov 13, 2019
1 parent d73cfd4 commit 1e37be7
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
12 changes: 8 additions & 4 deletions drivers/nfc/pn533/pn533.c
Original file line number Diff line number Diff line change
Expand Up @@ -2643,13 +2643,17 @@ static int pn532_sam_configuration(struct nfc_dev *nfc_dev)
static int pn533_dev_up(struct nfc_dev *nfc_dev)
{
struct pn533 *dev = nfc_get_drvdata(nfc_dev);
int rc;

if (dev->phy_ops->dev_up)
dev->phy_ops->dev_up(dev);
if (dev->phy_ops->dev_up) {
rc = dev->phy_ops->dev_up(dev);
if (rc)
return rc;
}

if ((dev->device_type == PN533_DEVICE_PN532) ||
(dev->device_type == PN533_DEVICE_PN532_AUTOPOLL)) {
int rc = pn532_sam_configuration(nfc_dev);
rc = pn532_sam_configuration(nfc_dev);

if (rc)
return rc;
Expand All @@ -2665,7 +2669,7 @@ static int pn533_dev_down(struct nfc_dev *nfc_dev)

ret = pn533_rf_field(nfc_dev, 0);
if (dev->phy_ops->dev_down && !ret)
dev->phy_ops->dev_down(dev);
ret = dev->phy_ops->dev_down(dev);

return ret;
}
Expand Down
4 changes: 2 additions & 2 deletions drivers/nfc/pn533/pn533.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ struct pn533_phy_ops {
* bring up it's interface to the chip and have it suspended for power
* saving reasons otherwise.
*/
void (*dev_up)(struct pn533 *priv);
void (*dev_down)(struct pn533 *priv);
int (*dev_up)(struct pn533 *priv);
int (*dev_down)(struct pn533 *priv);
};


Expand Down
13 changes: 10 additions & 3 deletions drivers/nfc/pn533/uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,20 +100,27 @@ static void pn532_uart_abort_cmd(struct pn533 *dev, gfp_t flags)
pn533_recv_frame(dev, NULL, -ENOENT);
}

static void pn532_dev_up(struct pn533 *dev)
static int pn532_dev_up(struct pn533 *dev)
{
struct pn532_uart_phy *pn532 = dev->phy;
int ret = 0;

ret = serdev_device_open(pn532->serdev);
if (ret)
return ret;

serdev_device_open(pn532->serdev);
pn532->send_wakeup = PN532_SEND_LAST_WAKEUP;
return ret;
}

static void pn532_dev_down(struct pn533 *dev)
static int pn532_dev_down(struct pn533 *dev)
{
struct pn532_uart_phy *pn532 = dev->phy;

serdev_device_close(pn532->serdev);
pn532->send_wakeup = PN532_SEND_WAKEUP;

return 0;
}

static struct pn533_phy_ops uart_phy_ops = {
Expand Down

0 comments on commit 1e37be7

Please sign in to comment.