Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1439970 > unrolled thread
| Started by | chengang@emindsoft.com.cn |
|---|---|
| First post | 2016-07-09 19:30 +0200 |
| Last post | 2016-07-17 02:20 +0200 |
| Articles | 5 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage chengang@emindsoft.com.cn - 2016-07-09 19:30 +0200
Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage Andrew Morton <akpm@linux-foundation.org> - 2016-07-11 23:20 +0200
Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage Chen Gang <chengang@emindsoft.com.cn> - 2016-07-12 19:10 +0200
Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage Michal Hocko <mhocko@kernel.org> - 2016-07-13 10:00 +0200
Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage Chen Gang <chengang@emindsoft.com.cn> - 2016-07-17 02:20 +0200
| From | chengang@emindsoft.com.cn |
|---|---|
| Date | 2016-07-09 19:30 +0200 |
| Subject | [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage |
| Message-ID | <rT4eK-5W3-7@gated-at.bofh.it> |
From: Chen Gang <chengang@emindsoft.com.cn>
For a pure output parameter:
- When callee fails, the caller should not assume the output parameter
is still valid.
- And callee should not assume the pure output parameter must be
provided by caller -- caller has right to pass NULL when caller does
not care about it.
Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
---
include/linux/mm.h | 5 ++---
mm/gup.c | 6 +++---
mm/mlock.c | 2 +-
mm/nommu.c | 1 -
4 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b21e5f3..5c560fd 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2205,10 +2205,9 @@ struct page *follow_page_mask(struct vm_area_struct *vma,
unsigned int *page_mask);
static inline struct page *follow_page(struct vm_area_struct *vma,
- unsigned long address, unsigned int foll_flags)
+ unsigned long address, unsigned int foll_flags)
{
- unsigned int unused_page_mask;
- return follow_page_mask(vma, address, foll_flags, &unused_page_mask);
+ return follow_page_mask(vma, address, foll_flags, NULL);
}
#define FOLL_WRITE 0x01 /* check pte is writable */
diff --git a/mm/gup.c b/mm/gup.c
index 96b2b2f..9684b06 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -222,8 +222,6 @@ struct page *follow_page_mask(struct vm_area_struct *vma,
struct page *page;
struct mm_struct *mm = vma->vm_mm;
- *page_mask = 0;
-
page = follow_huge_addr(mm, address, flags & FOLL_WRITE);
if (!IS_ERR(page)) {
BUG_ON(flags & FOLL_GET);
@@ -298,7 +296,8 @@ struct page *follow_page_mask(struct vm_area_struct *vma,
page = follow_trans_huge_pmd(vma, address, pmd, flags);
spin_unlock(ptl);
- *page_mask = HPAGE_PMD_NR - 1;
+ if (page_mask)
+ *page_mask = HPAGE_PMD_NR - 1;
return page;
}
@@ -574,6 +573,7 @@ retry:
if (unlikely(fatal_signal_pending(current)))
return i ? i : -ERESTARTSYS;
cond_resched();
+ page_mask = 0;
page = follow_page_mask(vma, start, foll_flags, &page_mask);
if (!page) {
int ret;
diff --git a/mm/mlock.c b/mm/mlock.c
index ef8dc9f..626eb58 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -438,7 +438,7 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,
while (start < end) {
struct page *page;
- unsigned int page_mask;
+ unsigned int page_mask = 0;
unsigned long page_increm;
struct pagevec pvec;
struct zone *zone;
diff --git a/mm/nommu.c b/mm/nommu.c
index 95daf81..c1a0a89 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -1749,7 +1749,6 @@ struct page *follow_page_mask(struct vm_area_struct *vma,
unsigned long address, unsigned int flags,
unsigned int *page_mask)
{
- *page_mask = 0;
return NULL;
}
--
1.9.3
[toc] | [next] | [standalone]
| From | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Date | 2016-07-11 23:20 +0200 |
| Subject | Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage |
| Message-ID | <rTQMp-41w-9@gated-at.bofh.it> |
| In reply to | #1439970 |
On Sun, 10 Jul 2016 01:17:05 +0800 chengang@emindsoft.com.cn wrote: > For a pure output parameter: > > - When callee fails, the caller should not assume the output parameter > is still valid. > > - And callee should not assume the pure output parameter must be > provided by caller -- caller has right to pass NULL when caller does > not care about it. Sorry, I don't think this one is worth merging really.
[toc] | [prev] | [next] | [standalone]
| From | Chen Gang <chengang@emindsoft.com.cn> |
|---|---|
| Date | 2016-07-12 19:10 +0200 |
| Subject | Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage |
| Message-ID | <rU9m2-7TC-25@gated-at.bofh.it> |
| In reply to | #1440913 |
On 7/12/16 05:17, Andrew Morton wrote: > On Sun, 10 Jul 2016 01:17:05 +0800 chengang@emindsoft.com.cn wrote: > >> For a pure output parameter: >> >> - When callee fails, the caller should not assume the output parameter >> is still valid. >> >> - And callee should not assume the pure output parameter must be >> provided by caller -- caller has right to pass NULL when caller does >> not care about it. > > Sorry, I don't think this one is worth merging really. > OK, thanks, I can understand. It will be better if provide more details: e.g. - This patch is incorrect, or the comments is not correct. - The patch is worthless, at present. - ... By the way, this patch let the callee keep the output parameter no touch if callee no additional outputs, callee assumes caller has initialized the output parameter (for me, it is OK, there are many cases like this). Thanks. -- Chen Gang (陈刚) Managing Natural Environments is the Duty of Human Beings.
[toc] | [prev] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2016-07-13 10:00 +0200 |
| Subject | Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage |
| Message-ID | <rUnfk-8tL-27@gated-at.bofh.it> |
| In reply to | #1441596 |
On Wed 13-07-16 01:03:10, Chen Gang wrote: > On 7/12/16 05:17, Andrew Morton wrote: > > On Sun, 10 Jul 2016 01:17:05 +0800 chengang@emindsoft.com.cn wrote: > > > >> For a pure output parameter: > >> > >> - When callee fails, the caller should not assume the output parameter > >> is still valid. > >> > >> - And callee should not assume the pure output parameter must be > >> provided by caller -- caller has right to pass NULL when caller does > >> not care about it. > > > > Sorry, I don't think this one is worth merging really. > > > > OK, thanks, I can understand. > > It will be better if provide more details: e.g. > > - This patch is incorrect, or the comments is not correct. > > - The patch is worthless, at present. I would say the patch is not really needed. The code you are touching works just fine and there is no reason to touch it unless this is a part of a larger change where future changes would be easier to review/implement. -- Michal Hocko SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Chen Gang <chengang@emindsoft.com.cn> |
|---|---|
| Date | 2016-07-17 02:20 +0200 |
| Subject | Re: [PATCH] mm: gup: Re-define follow_page_mask output parameter page_mask usage |
| Message-ID | <rVHYl-27u-5@gated-at.bofh.it> |
| In reply to | #1442138 |
On 7/13/16 15:50, Michal Hocko wrote: > On Wed 13-07-16 01:03:10, Chen Gang wrote: >> On 7/12/16 05:17, Andrew Morton wrote: >>> On Sun, 10 Jul 2016 01:17:05 +0800 chengang@emindsoft.com.cn wrote: >>> >>>> For a pure output parameter: >>>> >>>> - When callee fails, the caller should not assume the output parameter >>>> is still valid. >>>> >>>> - And callee should not assume the pure output parameter must be >>>> provided by caller -- caller has right to pass NULL when caller does >>>> not care about it. >>> >>> Sorry, I don't think this one is worth merging really. >>> >> >> OK, thanks, I can understand. >> >> It will be better if provide more details: e.g. >> >> - This patch is incorrect, or the comments is not correct. >> >> - The patch is worthless, at present. > > I would say the patch is not really needed. The code you are touching > works just fine and there is no reason to touch it unless this is a part > of a larger change where future changes would be easier to > review/implement. > OK, thanks. I shall try to find other kinds of patches in linux/include, next. :-) -- Chen Gang (陈刚) Managing Natural Environments is the Duty of Human Beings.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web