diff options
author | Daeseok Youn <daeseok.youn@gmail.com> | 2014-06-20 18:21:50 +0900 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-06-20 08:28:02 -0700 |
commit | 7bc26a68ed6f7c5949526ab884439b86a6b28350 (patch) | |
tree | bc625f70192304dabab4f0e47436d8fce2e2c74f /drivers/staging/dgap/dgap.c | |
parent | 55a4ea71ca4225f723cca1c44da569bd4de9d739 (diff) |
staging: dgap: make dgap_found_board() return a brd pointer
Make dgap_found_board() return a brd pointer and that brd pointer
assign to dgap_board[] in the end of the dgap_init_one().
Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/dgap/dgap.c')
-rw-r--r-- | drivers/staging/dgap/dgap.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/staging/dgap/dgap.c b/drivers/staging/dgap/dgap.c index 5c8e62201c8d..d4f80afe947d 100644 --- a/drivers/staging/dgap/dgap.c +++ b/drivers/staging/dgap/dgap.c @@ -70,7 +70,8 @@ MODULE_SUPPORTED_DEVICE("dgap"); static int dgap_start(void); static void dgap_init_globals(void); -static int dgap_found_board(struct pci_dev *pdev, int id, int boardnum); +static struct board_t *dgap_found_board(struct pci_dev *pdev, int id, + int boardnum); static void dgap_cleanup_board(struct board_t *brd); static void dgap_poll_handler(ulong dummy); static int dgap_init_pci(void); @@ -582,11 +583,10 @@ static int dgap_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (rc) return -EIO; - rc = dgap_found_board(pdev, ent->driver_data, dgap_numboards); - if (rc) - return rc; + brd = dgap_found_board(pdev, ent->driver_data, dgap_numboards); + if (IS_ERR(brd)) + return PTR_ERR(brd); - brd = dgap_board[dgap_numboards++]; rc = dgap_firmware_load(pdev, ent->driver_data, brd); if (rc) goto cleanup_brd; @@ -617,6 +617,8 @@ static int dgap_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) brd->state = BOARD_READY; brd->dpastatus = BD_RUNNING; + dgap_board[dgap_numboards++] = brd; + return 0; tty_free: @@ -630,7 +632,7 @@ free_flipbuf: cleanup_brd: dgap_release_remap(brd); kfree(brd); - dgap_board[--dgap_numboards] = NULL; + return rc; } @@ -717,7 +719,8 @@ static void dgap_cleanup_board(struct board_t *brd) * * A board has been found, init it. */ -static int dgap_found_board(struct pci_dev *pdev, int id, int boardnum) +static struct board_t *dgap_found_board(struct pci_dev *pdev, int id, + int boardnum) { struct board_t *brd; unsigned int pci_irq; @@ -727,9 +730,7 @@ static int dgap_found_board(struct pci_dev *pdev, int id, int boardnum) /* get the board structure and prep it */ brd = kzalloc(sizeof(struct board_t), GFP_KERNEL); if (!brd) - return -ENOMEM; - - dgap_board[boardnum] = brd; + return ERR_PTR(-ENOMEM); /* store the info for the board we've found */ brd->magic = DGAP_BOARD_MAGIC; @@ -828,13 +829,12 @@ static int dgap_found_board(struct pci_dev *pdev, int id, int boardnum) pr_info("dgap: board %d: %s (rev %d), irq %ld\n", boardnum, brd->name, brd->rev, brd->irq); - return 0; + return brd; free_brd: kfree(brd); - dgap_board[boardnum] = NULL; - return ret; + return ERR_PTR(ret); } |