diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2015-02-10 03:39:44 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-03-01 22:37:00 -0500 |
commit | 03b8d3419fdfc02d1984a0db51c8b74426e12605 (patch) | |
tree | 740b43b278842ad3d88c47e1b707616e4c2c4a1a /drivers/misc/mei/nfc.c | |
parent | bca67d681c4864b74fa5fae9ee47e562d1e272b1 (diff) |
mei: add mei_cl_alloc_linked function
Add convenient wrapper mei_cl_alloc_linked
to simplify error handling
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/nfc.c')
-rw-r--r-- | drivers/misc/mei/nfc.c | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/drivers/misc/mei/nfc.c b/drivers/misc/mei/nfc.c index bb61a119b8bb..c3bcb63686d7 100644 --- a/drivers/misc/mei/nfc.c +++ b/drivers/misc/mei/nfc.c | |||
@@ -482,8 +482,8 @@ err: | |||
482 | int mei_nfc_host_init(struct mei_device *dev) | 482 | int mei_nfc_host_init(struct mei_device *dev) |
483 | { | 483 | { |
484 | struct mei_nfc_dev *ndev; | 484 | struct mei_nfc_dev *ndev; |
485 | struct mei_cl *cl_info, *cl = NULL; | 485 | struct mei_cl *cl_info, *cl; |
486 | struct mei_me_client *me_cl; | 486 | struct mei_me_client *me_cl = NULL; |
487 | int ret; | 487 | int ret; |
488 | 488 | ||
489 | 489 | ||
@@ -500,17 +500,6 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
500 | goto err; | 500 | goto err; |
501 | } | 501 | } |
502 | 502 | ||
503 | ndev->cl_info = mei_cl_allocate(dev); | ||
504 | ndev->cl = mei_cl_allocate(dev); | ||
505 | |||
506 | cl = ndev->cl; | ||
507 | cl_info = ndev->cl_info; | ||
508 | |||
509 | if (!cl || !cl_info) { | ||
510 | ret = -ENOMEM; | ||
511 | goto err; | ||
512 | } | ||
513 | |||
514 | /* check for valid client id */ | 503 | /* check for valid client id */ |
515 | me_cl = mei_me_cl_by_uuid(dev, &mei_nfc_info_guid); | 504 | me_cl = mei_me_cl_by_uuid(dev, &mei_nfc_info_guid); |
516 | if (!me_cl) { | 505 | if (!me_cl) { |
@@ -519,17 +508,21 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
519 | goto err; | 508 | goto err; |
520 | } | 509 | } |
521 | 510 | ||
511 | cl_info = mei_cl_alloc_linked(dev, MEI_HOST_CLIENT_ID_ANY); | ||
512 | if (IS_ERR(cl_info)) { | ||
513 | ret = PTR_ERR(cl_info); | ||
514 | goto err; | ||
515 | } | ||
516 | |||
522 | cl_info->me_client_id = me_cl->client_id; | 517 | cl_info->me_client_id = me_cl->client_id; |
523 | cl_info->cl_uuid = me_cl->props.protocol_name; | 518 | cl_info->cl_uuid = me_cl->props.protocol_name; |
524 | mei_me_cl_put(me_cl); | 519 | mei_me_cl_put(me_cl); |
525 | 520 | me_cl = NULL; | |
526 | ret = mei_cl_link(cl_info, MEI_HOST_CLIENT_ID_ANY); | ||
527 | if (ret) | ||
528 | goto err; | ||
529 | |||
530 | 521 | ||
531 | list_add_tail(&cl_info->device_link, &dev->device_list); | 522 | list_add_tail(&cl_info->device_link, &dev->device_list); |
532 | 523 | ||
524 | ndev->cl_info = cl_info; | ||
525 | |||
533 | /* check for valid client id */ | 526 | /* check for valid client id */ |
534 | me_cl = mei_me_cl_by_uuid(dev, &mei_nfc_guid); | 527 | me_cl = mei_me_cl_by_uuid(dev, &mei_nfc_guid); |
535 | if (!me_cl) { | 528 | if (!me_cl) { |
@@ -538,16 +531,21 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
538 | goto err; | 531 | goto err; |
539 | } | 532 | } |
540 | 533 | ||
534 | cl = mei_cl_alloc_linked(dev, MEI_HOST_CLIENT_ID_ANY); | ||
535 | if (IS_ERR(cl)) { | ||
536 | ret = PTR_ERR(cl); | ||
537 | goto err; | ||
538 | } | ||
539 | |||
541 | cl->me_client_id = me_cl->client_id; | 540 | cl->me_client_id = me_cl->client_id; |
542 | cl->cl_uuid = me_cl->props.protocol_name; | 541 | cl->cl_uuid = me_cl->props.protocol_name; |
543 | mei_me_cl_put(me_cl); | 542 | mei_me_cl_put(me_cl); |
544 | 543 | me_cl = NULL; | |
545 | ret = mei_cl_link(cl, MEI_HOST_CLIENT_ID_ANY); | ||
546 | if (ret) | ||
547 | goto err; | ||
548 | 544 | ||
549 | list_add_tail(&cl->device_link, &dev->device_list); | 545 | list_add_tail(&cl->device_link, &dev->device_list); |
550 | 546 | ||
547 | ndev->cl = cl; | ||
548 | |||
551 | ndev->req_id = 1; | 549 | ndev->req_id = 1; |
552 | 550 | ||
553 | INIT_WORK(&ndev->init_work, mei_nfc_init); | 551 | INIT_WORK(&ndev->init_work, mei_nfc_init); |
@@ -557,6 +555,7 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
557 | return 0; | 555 | return 0; |
558 | 556 | ||
559 | err: | 557 | err: |
558 | mei_me_cl_put(me_cl); | ||
560 | mei_nfc_free(ndev); | 559 | mei_nfc_free(ndev); |
561 | 560 | ||
562 | return ret; | 561 | return ret; |