diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2013-04-19 15:01:35 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-04-19 16:38:38 -0400 |
commit | fcb136e1ac5774909e0d85189f721b8dfa800e0f (patch) | |
tree | ac89a706d67783063d4f752c3acddc04c5ab10e8 /drivers/misc/mei/client.c | |
parent | 6e0f180fd8b47fa0884177a142e41a86117edc23 (diff) |
mei: fix reading large reposnes
While writting to device is limitted to max_msg_length advertized
in client properites the read can be much longer delivered consequiting chunks.
We use krealloc to enlarge the buffer when needed.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/client.c')
-rw-r--r-- | drivers/misc/mei/client.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c index 9541aa90d8f7..71892745e2e8 100644 --- a/drivers/misc/mei/client.c +++ b/drivers/misc/mei/client.c | |||
@@ -624,7 +624,7 @@ int mei_cl_flow_ctrl_reduce(struct mei_cl *cl) | |||
624 | * | 624 | * |
625 | * returns 0 on success, <0 on failure. | 625 | * returns 0 on success, <0 on failure. |
626 | */ | 626 | */ |
627 | int mei_cl_read_start(struct mei_cl *cl) | 627 | int mei_cl_read_start(struct mei_cl *cl, size_t length) |
628 | { | 628 | { |
629 | struct mei_device *dev; | 629 | struct mei_device *dev; |
630 | struct mei_cl_cb *cb; | 630 | struct mei_cl_cb *cb; |
@@ -657,8 +657,9 @@ int mei_cl_read_start(struct mei_cl *cl) | |||
657 | if (!cb) | 657 | if (!cb) |
658 | return -ENOMEM; | 658 | return -ENOMEM; |
659 | 659 | ||
660 | rets = mei_io_cb_alloc_resp_buf(cb, | 660 | /* always allocate at least client max message */ |
661 | dev->me_clients[i].props.max_msg_length); | 661 | length = max_t(size_t, length, dev->me_clients[i].props.max_msg_length); |
662 | rets = mei_io_cb_alloc_resp_buf(cb, length); | ||
662 | if (rets) | 663 | if (rets) |
663 | goto err; | 664 | goto err; |
664 | 665 | ||