lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 24 Oct 2014 13:38:21 -0700
From:	Laura Abbott <lauraa@...eaurora.org>
To:	Gioh Kim <gioh.kim@....com>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	John Stultz <john.stultz@...aro.org>,
	Rebecca Schultz Zavin <rebecca@...roid.com>
CC:	devel@...verdev.osuosl.org, gunho.lee@....com,
	linux-kernel@...r.kernel.org
Subject: Re: [RFCv2 2/3] staging: ion: debugfs to shrink pool

Hi,

On 10/23/2014 11:47 PM, Gioh Kim wrote:
> This patch creates debugfs files, /sys/kernel/debug/ion/heaps/system_shrink,
> to shrink pool or get pool size.
> Reading the file returns pool size and writing occurs to shrink pool.
>

Can you clarify here that you are updating the existing debugfs
infrastructure? Since the shrinker debugfs was commented out before
it missed the API update so it would be good to note that as well.

> Signed-off-by: Gioh Kim <gioh.kim@....com>
> ---
>   drivers/staging/android/ion/ion.c |   31 ++++++++-----------------------
>   1 file changed, 8 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index 290d4d2..ecc1121 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -1463,43 +1463,29 @@ static const struct file_operations debug_heap_fops = {
>   	.release = single_release,
>   };
>
> -#ifdef DEBUG_HEAP_SHRINKER

We're now unconditionally adding the shrinker debugfs. I'm not sure if
this is something we want in production code. Could you turn this
into a proper Kconfig?

>   static int debug_shrink_set(void *data, u64 val)
>   {
>   	struct ion_heap *heap = data;
> -	struct shrink_control sc;
>   	int objs;
>
> -	sc.gfp_mask = -1;
> -	sc.nr_to_scan = 0;
> -
> -	if (!val)
> -		return 0;
> -
> -	objs = heap->shrinker.shrink(&heap->shrinker, &sc);
> -	sc.nr_to_scan = objs;
> +	if (val)
> +		objs = val;
> +	else
> +		objs = heap->ops->shrink(heap, __GFP_HIGHMEM, 0);
>
> -	heap->shrinker.shrink(&heap->shrinker, &sc);
> +	(void)heap->ops->shrink(heap, __GFP_HIGHMEM, objs);

The shrinker API now has separate functions for counting and scanning
and ion wraps the calls to those as well to account for the deferred
freelist. I realize the existing behavior may have been broken but the
debugfs seems incomplete if it's not taking that into account as well.

>   	return 0;
>   }
>
>   static int debug_shrink_get(void *data, u64 *val)
>   {
>   	struct ion_heap *heap = data;
> -	struct shrink_control sc;
> -	int objs;
> -
> -	sc.gfp_mask = -1;
> -	sc.nr_to_scan = 0;
> -
> -	objs = heap->shrinker.shrink(&heap->shrinker, &sc);
> -	*val = objs;
> +	*val = heap->ops->shrink(heap, __GFP_HIGHMEM, 0);
>   	return 0;
>   }
>
>   DEFINE_SIMPLE_ATTRIBUTE(debug_shrink_fops, debug_shrink_get,
>   			debug_shrink_set, "%llu\n");
> -#endif
>
>   void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
>   {
> @@ -1534,8 +1520,7 @@ void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
>   			path, heap->name);
>   	}
>
> -#ifdef DEBUG_HEAP_SHRINKER
> -	if (heap->shrinker.shrink) {
> +	if (heap->ops->shrink) {

Technically a heap doesn't need to set ops->shrink to have a shrinker
set up (not that it really matters for the current setup). Checking
for scan_objects would be better.

>   		char debug_name[64];
>
>   		snprintf(debug_name, 64, "%s_shrink", heap->name);
> @@ -1550,7 +1535,7 @@ void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
>   				path, debug_name);
>   		}
>   	}
> -#endif
> +
>   	up_write(&dev->lock);
>   }
>
>

Thanks,
Laura

-- 
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ