All of lore.kernel.org
 help / color / mirror / Atom feed
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 15:23:21 +0200	[thread overview]
Message-ID: <54899AC9.2020508@mellanox.com> (raw)
In-Reply-To: <1418301590.11111.95.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>

On 11/12/2014 14:39, Yann Droneaud wrote:
> Le jeudi 11 décembre 2014 à 13:09 +0200, Haggai Eran a écrit :
>> On 10/12/2014 18:22, Yann Droneaud wrote:
>>> Hi,
>>>
>>> Le mardi 11 novembre 2014 à 18:36 +0200, Haggai Eran a écrit :
>>>> +{
>>>> +	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;
>>>> +	}
>>>> +
> 
> I think the test could be rewritten as:
> 
> 	if (offset > umem->length || length > umem->length - offset)
> 
> That's one operation less.
> 

Okay.

> 
>>>> +	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.
>>
> 
> As the length is compared against umem->length (+ offset), this would 
> mean umem->length is not "synchronized" with the length of the data 
> described by the scatter/gather list ?

Yes, I don't think this can happen, so we can just return 0 in case of
success like you suggested.

> 
> BTW, ib_copy_from_udata() is defined as an inline function. Would it be
> better to have ib_umem_copy_from() being an inline function too ?
> (In such case, I would remove the error message to not duplicate it
>  across all modules using the function)

I don't see a great benefit from inlining here. The time to perform this
function is mostly due to the traversal of the scatterlist, and I don't
think an additional function call would make much of a difference.

Regards,
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

  parent reply	other threads:[~2014-12-11 13:23 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
     [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 [this message]
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=54899AC9.2020508@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.