Re: [PATCH v4 1/2] RDS: memory allocated must be align to 8

2016-04-08 Thread santosh shilimkar

On 4/8/2016 1:10 PM, David Miller wrote:

From: santosh shilimkar 
Date: Fri, 8 Apr 2016 12:44:39 -0700


On 4/7/2016 4:57 AM, Shamir Rabinovitch wrote:

Fix issue in 'rds_ib_cong_recv' when accessing unaligned memory
allocated by 'rds_page_remainder_alloc' using uint64_t pointer.


Sorry I still didn't follow this change still. What exactly is the
problem.


You can't stop the offset at non-8byte intervals, because the chunks
being used in these arenas can have 64-bit values in it, which must be
8-byte aligned.


I see. Thanks for explaining it Dave.
Its fine to apply then.
Acked-by: Santosh Shilimkar 

Regards,
Santosh



Re: [PATCH v4 1/2] RDS: memory allocated must be align to 8

2016-04-08 Thread David Miller
From: santosh shilimkar 
Date: Fri, 8 Apr 2016 12:44:39 -0700

> On 4/7/2016 4:57 AM, Shamir Rabinovitch wrote:
>> Fix issue in 'rds_ib_cong_recv' when accessing unaligned memory
>> allocated by 'rds_page_remainder_alloc' using uint64_t pointer.
>>
> Sorry I still didn't follow this change still. What exactly is the
> problem.

You can't stop the offset at non-8byte intervals, because the chunks
being used in these arenas can have 64-bit values in it, which must be
8-byte aligned.

It looks extremely obvious to me.


Re: [PATCH v4 1/2] RDS: memory allocated must be align to 8

2016-04-08 Thread santosh shilimkar

On 4/7/2016 4:57 AM, Shamir Rabinovitch wrote:

Fix issue in 'rds_ib_cong_recv' when accessing unaligned memory
allocated by 'rds_page_remainder_alloc' using uint64_t pointer.


Sorry I still didn't follow this change still. What exactly is the
problem.


Signed-off-by: Shamir Rabinovitch 
---
  net/rds/page.c |4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/rds/page.c b/net/rds/page.c
index 616f21f..e2b5a58 100644
--- a/net/rds/page.c
+++ b/net/rds/page.c
@@ -135,8 +135,8 @@ int rds_page_remainder_alloc(struct scatterlist *scat, 
unsigned long bytes,
if (rem->r_offset != 0)
rds_stats_inc(s_page_remainder_hit);

-   rem->r_offset += bytes;
-   if (rem->r_offset == PAGE_SIZE) {
+   rem->r_offset += ALIGN(bytes, 8);
+   if (rem->r_offset >= PAGE_SIZE) {
__free_page(rem->r_page);
rem->r_page = NULL;
}



[PATCH v4 1/2] RDS: memory allocated must be align to 8

2016-04-07 Thread Shamir Rabinovitch
Fix issue in 'rds_ib_cong_recv' when accessing unaligned memory
allocated by 'rds_page_remainder_alloc' using uint64_t pointer.

Signed-off-by: Shamir Rabinovitch 
---
 net/rds/page.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/rds/page.c b/net/rds/page.c
index 616f21f..e2b5a58 100644
--- a/net/rds/page.c
+++ b/net/rds/page.c
@@ -135,8 +135,8 @@ int rds_page_remainder_alloc(struct scatterlist *scat, 
unsigned long bytes,
if (rem->r_offset != 0)
rds_stats_inc(s_page_remainder_hit);
 
-   rem->r_offset += bytes;
-   if (rem->r_offset == PAGE_SIZE) {
+   rem->r_offset += ALIGN(bytes, 8);
+   if (rem->r_offset >= PAGE_SIZE) {
__free_page(rem->r_page);
rem->r_page = NULL;
}
-- 
1.7.1