From: Haggai Eran <haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
To: Yann Droneaud <ydroneaud-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
Cc: Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Liran Liss <liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Majd Dibbiny <majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Jerome Glisse <j.glisse-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v2 04/17] IB/core: Add umem function to read data from user-space
Date: Thu, 11 Dec 2014 13:09:56 +0200 [thread overview]
Message-ID: <54897B84.9000708@mellanox.com> (raw)
In-Reply-To: <1418228521.11111.50.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
On 10/12/2014 18:22, Yann Droneaud wrote:
> Hi,
>
> Le mardi 11 novembre 2014 à 18:36 +0200, Haggai Eran a écrit :
>> In some drivers there's a need to read data from a user space area that
>> was pinned using ib_umem, when running from a different process context.
>>
>> The ib_umem_copy_from function allows reading data from the physical pages
>> pinned in the ib_umem struct.
>>
>> Signed-off-by: Haggai Eran <haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>> ---
>> drivers/infiniband/core/umem.c | 26 ++++++++++++++++++++++++++
>> include/rdma/ib_umem.h | 2 ++
>> 2 files changed, 28 insertions(+)
>>
>> diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
>> index e0f883292374..77bec75963e7 100644
>> --- a/drivers/infiniband/core/umem.c
>> +++ b/drivers/infiniband/core/umem.c
>> @@ -292,3 +292,29 @@ int ib_umem_page_count(struct ib_umem *umem)
>> return n;
>> }
>> EXPORT_SYMBOL(ib_umem_page_count);
>> +
>> +/*
>> + * Copy from the given ib_umem's pages to the given buffer.
>> + *
>> + * umem - the umem to copy from
>> + * offset - offset to start copying from
>> + * dst - destination buffer
>> + * length - buffer length
>> + *
>> + * Returns the number of copied bytes, or an error code.
>> + */
>> +int ib_umem_copy_from(struct ib_umem *umem, size_t offset, void *dst,
>> + size_t length)
>
> I would prefer the arguments in the same order as ib_copy_from_udata()
>
> int ib_umem_copy_from(void *dst,
> struct ib_umem *umem, size_t umem_offset,
> size_t length);
No problem.
>> +{
>> + size_t end = offset + length;
>> +
>> + if (offset > umem->length || end > umem->length || end < offset) {
>> + pr_err("ib_umem_copy_from not in range. offset: %zd umem length: %zd end: %zd\n",
>> + offset, umem->length, end);
>> + return -EINVAL;
>> + }
>> +
>> + return sg_pcopy_to_buffer(umem->sg_head.sgl, umem->nmap, dst, length,
>> + offset + ib_umem_offset(umem));
>> +}
>> +EXPORT_SYMBOL(ib_umem_copy_from);
>
> As the function return a "int", no more than INT_MAX bytes (likely 2^31
> - 1) can be copied. Perhaps changing the return type to to ssize_t would
> be better (and a check to enfore ssize_t maximum value). Or change the
> function could return 0 in case of success or a error code, just like
> ib_copy_from_udata().
>
Okay. I'll change it to match ib_copy_from_udata. We're checking the
umem size in the call site of this function anyway, and the only reason
I see sg_pcopy_to_buffer would return less than *length* bytes is when
reaching the end of the scatterlist.
Haggai
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-12-11 11:09 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-11 16:36 [PATCH v2 00/17] On demand paging Haggai Eran
[not found] ` <1415723783-2138-1-git-send-email-haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-11-11 16:36 ` [PATCH v2 01/17] IB/mlx5: Remove per-MR pas and dma pointers Haggai Eran
2014-11-11 16:36 ` [PATCH v2 02/17] IB/mlx5: Enhance UMR support to allow partial page table update Haggai Eran
2014-11-11 16:36 ` [PATCH v2 03/17] IB/core: Replace ib_umem's offset field with a full address Haggai Eran
2014-11-11 16:36 ` [PATCH v2 04/17] IB/core: Add umem function to read data from user-space Haggai Eran
[not found] ` <1415723783-2138-5-git-send-email-haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-12-10 16:22 ` Yann Droneaud
[not found] ` <1418228521.11111.50.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
2014-12-11 11:09 ` Haggai Eran [this message]
[not found] ` <54897B84.9000708-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-12-11 12:39 ` Yann Droneaud
[not found] ` <1418301590.11111.95.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
2014-12-11 13:09 ` Or Gerlitz
[not found] ` <CAJ3xEMh-=wLD_FLxNaiDYofA4mOf+woep2PPmKDbY2-k9XBS+g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-11 14:48 ` Yann Droneaud
2014-12-11 13:23 ` Haggai Eran
2014-11-11 16:36 ` [PATCH v2 05/17] IB/mlx5: Add function to read WQE " Haggai Eran
2014-11-11 16:36 ` [PATCH v2 06/17] IB/core: Add support for extended query device caps Haggai Eran
[not found] ` <1415723783-2138-7-git-send-email-haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-12-09 21:43 ` Roland Dreier
[not found] ` <CAL1RGDXsYmWD2_ncMmRrMgAGn1bBaL9tNQ2mAYDG-kySF4037A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-10 7:20 ` Haggai Eran
2014-12-10 12:59 ` Yann Droneaud
2014-12-10 13:04 ` Yann Droneaud
[not found] ` <1418216676.11111.45.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
2014-12-10 14:54 ` Haggai Eran
2014-11-11 16:36 ` [PATCH v2 07/17] IB/core: Add flags for on demand paging support Haggai Eran
2014-11-11 16:36 ` [PATCH v2 08/17] IB/core: Add support for on demand paging regions Haggai Eran
2014-11-11 16:36 ` [PATCH v2 09/17] IB/core: Implement support for MMU notifiers regarding " Haggai Eran
2014-11-11 16:36 ` [PATCH v2 10/17] net/mlx5_core: Add support for page faults events and low level handling Haggai Eran
2014-11-11 16:36 ` [PATCH v2 11/17] IB/mlx5: Implement the ODP capability query verb Haggai Eran
2014-11-11 16:36 ` [PATCH v2 12/17] IB/mlx5: Changes in memory region creation to support on-demand paging Haggai Eran
2014-11-11 16:36 ` [PATCH v2 13/17] IB/mlx5: Add mlx5_ib_update_mtt to update page tables after creation Haggai Eran
2014-11-11 16:36 ` [PATCH v2 14/17] IB/mlx5: Page faults handling infrastructure Haggai Eran
2014-11-11 16:36 ` [PATCH v2 15/17] IB/mlx5: Handle page faults Haggai Eran
2014-11-11 16:36 ` [PATCH v2 16/17] IB/mlx5: Add support for RDMA read/write responder " Haggai Eran
2014-11-11 16:36 ` [PATCH v2 17/17] IB/mlx5: Implement on demand paging by adding support for MMU notifiers Haggai Eran
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54897B84.9000708@mellanox.com \
--to=haggaie-vpraknaxozvwk0htik3j/w@public.gmane.org \
--cc=j.glisse-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=ydroneaud-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.