All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Minchan Kim <minchan@kernel.org>,
	Steven Allen <steven@stebalien.com>,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH] zram: restrict add/remove attributes to root only
Date: Sun, 4 Dec 2016 20:41:17 +0900	[thread overview]
Message-ID: <20161204114117.GA4520@tigerII.localdomain> (raw)
In-Reply-To: <20161204112820.GA24757@kroah.com>

On (12/04/16 12:28), Greg KH wrote:
> Date: Sun, 4 Dec 2016 12:28:20 +0100
> From: Greg KH <gregkh@linuxfoundation.org>
> To: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>, Minchan Kim
>  <minchan@kernel.org>, Steven Allen <steven@stebalien.com>,
>  linux-kernel@vger.kernel.org, stable@vger.kernel.org, Sergey Senozhatsky
>  <sergey.senozhatsky.work@gmail.com>
> Subject: Re: [PATCH] zram: restrict add/remove attributes to root only
> User-Agent: Mutt/1.7.1 (2016-10-04)
> 
> On Sun, Dec 04, 2016 at 07:52:08PM +0900, Sergey Senozhatsky wrote:
> > On (12/04/16 11:28), Greg KH wrote:
> > > On Sun, Dec 04, 2016 at 11:35:15AM +0900, Sergey Senozhatsky wrote:
> > [..]
> > 
> > > Why can't a normal user read the attribute?  Does a read actually modify
> > > something?
> > 
> > yes, it does.

to clarify a bit more:

we allocate a new device ID using idr_alloc(). so the IDs are limited
and, thus, the number of devices is limited as well - signed int. each
new device has NO:
 -- zspoll (zsmalloc pool in zram case)
 -- compression per-CPU backends (working-mem/scratch buffers, etc.)
 -- meta table

so no big memory allocations. (a 'normal' user can't init the device,
he/she can just create it. which is the problem here: we don't want a
'normal' user be able to do this).

every device has:
 -- blk queue
 -- sysfs attrs
 -- gendisk
 -- zram structure allocated.

so each new device consumes some memory, but not insane amounts of it.


> Oh that's totally and completely broken then.
> 
> Reading from a sysfs file should NEVER cause side affects to the system.
> Please fix up this api.

some history. we started with a 'loop device'-like scheme, but
ended up with a sysfs approach

 [1] https://marc.info/?l=linux-kernel&m=142495984002611
 [2] https://marc.info/?l=linux-kernel&m=142507747808572
 [3] https://marc.info/?l=linux-kernel&m=142530591720172
 [4] https://marc.info/?l=linux-kernel&m=142509446812318
 [5] https://marc.info/?l=linux-kernel&m=142509782112819


> > reading from a hot_add file creates a new zram device and returns a new
> > device's device_id. not initialized device (so it does not eat the memory
> > for handle table, etc.), but with its own set of sysfs attrs, etc. which
> > consumes memory after all. so a 'normal' user, doing a simple read from a
> > hot_add file in a loop just for fun, can create a lot of devices and,
> > quite likely, cause some troubles (as reported by Steven Allen).
> 
> Please switch this to be a char device node if you wish to "write and
> get a device handle back".  I don't know how I missed that in the
> original api review, sorry about that.
>
> For now, you need to document the heck out of this in the attribute
> declaration that this is what is going on.  Otherwise someone like me
> will come along and "fix up" the file to use ATTR_RO again in the
> future and you will have the same problem again.


I believe we have a documentation

	Documentation/ABI/testing/sysfs-class-zram
and
	Documentation/blockdev/zram.txt

both explain this attr.

	-ss

  reply	other threads:[~2016-12-04 11:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-04  2:35 [PATCH] zram: restrict add/remove attributes to root only Sergey Senozhatsky
2016-12-04 10:28 ` Greg KH
2016-12-04 10:52   ` Sergey Senozhatsky
2016-12-04 11:28     ` Greg KH
2016-12-04 11:41       ` Sergey Senozhatsky [this message]
2016-12-04 11:55         ` Greg KH
2016-12-04 12:08           ` Sergey Senozhatsky
2016-12-04 12:49       ` Sergey Senozhatsky

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=20161204114117.GA4520@tigerII.localdomain \
    --to=sergey.senozhatsky@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=steven@stebalien.com \
    /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.