Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcf975d5 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Linus Torvalds
Browse files

mm/page-writeback.c: dirty limit type should be unsigned long



get_dirty_limits() calls clip_bdi_dirty_limit() and task_dirty_limit()
with variable pbdi_dirty as one of the arguments.  This variable is an
unsigned long * but both functions expect it to be a long *.  This causes
the following sparse warnings:

  warning: incorrect type in argument 3 (different signedness)
     expected long *pbdi_dirty
     got unsigned long *pbdi_dirty
  warning: incorrect type in argument 2 (different signedness)
     expected long *pdirty
     got unsigned long *pbdi_dirty

Fix the warnings by changing the long * to unsigned long * in both
functions.

Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 78dc583d
Loading
Loading
Loading
Loading
+10 −9
Original line number Original line Diff line number Diff line
@@ -265,18 +265,19 @@ static void bdi_writeout_fraction(struct backing_dev_info *bdi,
 * This avoids exceeding the total dirty_limit when the floating averages
 * This avoids exceeding the total dirty_limit when the floating averages
 * fluctuate too quickly.
 * fluctuate too quickly.
 */
 */
static void
static void clip_bdi_dirty_limit(struct backing_dev_info *bdi,
clip_bdi_dirty_limit(struct backing_dev_info *bdi, long dirty, long *pbdi_dirty)
		unsigned long dirty, unsigned long *pbdi_dirty)
{
{
	long avail_dirty;
	unsigned long avail_dirty;


	avail_dirty = dirty -
	avail_dirty = global_page_state(NR_FILE_DIRTY) +
		(global_page_state(NR_FILE_DIRTY) +
		 global_page_state(NR_WRITEBACK) +
		 global_page_state(NR_WRITEBACK) +
		 global_page_state(NR_UNSTABLE_NFS) +
		 global_page_state(NR_UNSTABLE_NFS) +
		 global_page_state(NR_WRITEBACK_TEMP));
		 global_page_state(NR_WRITEBACK_TEMP);


	if (avail_dirty < 0)
	if (avail_dirty < dirty)
		avail_dirty = dirty - avail_dirty;
	else
		avail_dirty = 0;
		avail_dirty = 0;


	avail_dirty += bdi_stat(bdi, BDI_RECLAIMABLE) +
	avail_dirty += bdi_stat(bdi, BDI_RECLAIMABLE) +
@@ -299,10 +300,10 @@ static inline void task_dirties_fraction(struct task_struct *tsk,
 *
 *
 *   dirty -= (dirty/8) * p_{t}
 *   dirty -= (dirty/8) * p_{t}
 */
 */
static void task_dirty_limit(struct task_struct *tsk, long *pdirty)
static void task_dirty_limit(struct task_struct *tsk, unsigned long *pdirty)
{
{
	long numerator, denominator;
	long numerator, denominator;
	long dirty = *pdirty;
	unsigned long dirty = *pdirty;
	u64 inv = dirty >> 3;
	u64 inv = dirty >> 3;


	task_dirties_fraction(tsk, &numerator, &denominator);
	task_dirties_fraction(tsk, &numerator, &denominator);