From: Wu Fengguang <fengguang.wu@intel.com>
To: Witold Baryluk <baryluk@smp.if.uj.edu.pl>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>, linux-fsdevel@vger.kernel.org
Subject: Re: Possible usage of uninitalized task_ratelimit variable in mm/page-writeback.c
Date: Mon, 7 Nov 2011 17:17:04 +0800 [thread overview]
Message-ID: <20111107091704.GA29562@localhost> (raw)
In-Reply-To: <20111107081824.GA18221@smp.if.uj.edu.pl>
On Mon, Nov 07, 2011 at 04:18:24PM +0800, Witold Baryluk wrote:
> Hi,
>
> I found a minor issue when compiling kernel today
>
>
> CC mm/page-writeback.o
> mm/page-writeback.c: In function ‘balance_dirty_pages_ratelimited_nr’:
> include/trace/events/writeback.h:281:1: warning: ‘task_ratelimit’ may be used uninitialized in this function [-Wuninitialized]
> mm/page-writeback.c:1018:16: note: ‘task_ratelimit’ was declared here
>
> Indeed in balance_dirty_pages a task_ratelimit may be not initialized
> (initialization skiped by goto pause;), and then used when calling
> tracing hook.
Witold, thanks for the report! This patch should fix the bug.
Thanks,
Fengguang
---
writeback: fix uninitialized task_ratelimit
In balance_dirty_pages() task_ratelimit may be not initialized
(initialization skiped by goto pause;), and then used when calling
tracing hook.
Fix it by moving the task_ratelimit assignment before goto pause.
Reported-by: Witold Baryluk <baryluk@smp.if.uj.edu.pl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
mm/page-writeback.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- linux.orig/mm/page-writeback.c 2011-11-07 17:07:04.080000043 +0800
+++ linux/mm/page-writeback.c 2011-11-07 17:08:43.232000031 +0800
@@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct a
pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
background_thresh, nr_dirty,
bdi_thresh, bdi_dirty);
- if (unlikely(pos_ratio == 0)) {
+ task_ratelimit = (u64)dirty_ratelimit *
+ pos_ratio >> RATELIMIT_CALC_SHIFT;
+ if (unlikely(task_ratelimit == 0)) {
pause = max_pause;
goto pause;
}
- task_ratelimit = (u64)dirty_ratelimit *
- pos_ratio >> RATELIMIT_CALC_SHIFT;
- pause = (HZ * pages_dirtied) / (task_ratelimit | 1);
+ pause = (HZ * pages_dirtied) / task_ratelimit;
if (unlikely(pause <= 0)) {
trace_balance_dirty_pages(bdi,
dirty_thresh,
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Witold Baryluk <baryluk@smp.if.uj.edu.pl>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>, linux-fsdevel@vger.kernel.org
Subject: Re: Possible usage of uninitalized task_ratelimit variable in mm/page-writeback.c
Date: Mon, 7 Nov 2011 17:17:04 +0800 [thread overview]
Message-ID: <20111107091704.GA29562@localhost> (raw)
In-Reply-To: <20111107081824.GA18221@smp.if.uj.edu.pl>
On Mon, Nov 07, 2011 at 04:18:24PM +0800, Witold Baryluk wrote:
> Hi,
>
> I found a minor issue when compiling kernel today
>
>
> CC mm/page-writeback.o
> mm/page-writeback.c: In function a??balance_dirty_pages_ratelimited_nra??:
> include/trace/events/writeback.h:281:1: warning: a??task_ratelimita?? may be used uninitialized in this function [-Wuninitialized]
> mm/page-writeback.c:1018:16: note: a??task_ratelimita?? was declared here
>
> Indeed in balance_dirty_pages a task_ratelimit may be not initialized
> (initialization skiped by goto pause;), and then used when calling
> tracing hook.
Witold, thanks for the report! This patch should fix the bug.
Thanks,
Fengguang
---
writeback: fix uninitialized task_ratelimit
In balance_dirty_pages() task_ratelimit may be not initialized
(initialization skiped by goto pause;), and then used when calling
tracing hook.
Fix it by moving the task_ratelimit assignment before goto pause.
Reported-by: Witold Baryluk <baryluk@smp.if.uj.edu.pl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
mm/page-writeback.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- linux.orig/mm/page-writeback.c 2011-11-07 17:07:04.080000043 +0800
+++ linux/mm/page-writeback.c 2011-11-07 17:08:43.232000031 +0800
@@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct a
pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
background_thresh, nr_dirty,
bdi_thresh, bdi_dirty);
- if (unlikely(pos_ratio == 0)) {
+ task_ratelimit = (u64)dirty_ratelimit *
+ pos_ratio >> RATELIMIT_CALC_SHIFT;
+ if (unlikely(task_ratelimit == 0)) {
pause = max_pause;
goto pause;
}
- task_ratelimit = (u64)dirty_ratelimit *
- pos_ratio >> RATELIMIT_CALC_SHIFT;
- pause = (HZ * pages_dirtied) / (task_ratelimit | 1);
+ pause = (HZ * pages_dirtied) / task_ratelimit;
if (unlikely(pause <= 0)) {
trace_balance_dirty_pages(bdi,
dirty_thresh,
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-11-07 9:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-07 8:18 Possible usage of uninitalized task_ratelimit variable in mm/page-writeback.c Witold Baryluk
2011-11-07 9:17 ` Wu Fengguang [this message]
2011-11-07 9:17 ` Wu Fengguang
2011-11-07 11:05 ` Witold Baryluk
2011-11-07 11:05 ` Witold Baryluk
2011-11-07 11:15 ` Wu Fengguang
2011-11-07 11:15 ` Wu Fengguang
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=20111107091704.GA29562@localhost \
--to=fengguang.wu@intel.com \
--cc=baryluk@smp.if.uj.edu.pl \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.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.