BACKPORT: device coredump: add new device coredump class

(upstream commits 833c95456a70826d1384883b73fd23aff24d366f,
9c6026994c2a18473c9ef9ed77e8cf8e344f4357 and
cd3d9ea142c9fd47351e79fe30c7ae2c86302cda to get the same
Kconfig logic; all modified to compile on this tree)

Many devices run firmware and/or complex hardware, and most of that
can have bugs. When it misbehaves, however, it is often much harder
to debug than software running on the host.

Introduce a "device coredump" mechanism to allow dumping internal
device/firmware state through a generalized mechanism. As devices
are different and information needed can vary accordingly, this
doesn't prescribe a file format - it just provides mechanism to
get data to be able to capture it in a generalized way (e.g. in
distributions.)

The dumped data will be readable in sysfs in the virtual device's
data file under /sys/class/devcoredump/devcd*/. Writing to it will
free the data and remove the device, as does a 5-minute timeout.

Note that generalized capturing of such data may result in privacy
issues, so users generally need to be involved. In order to allow
certain users/system integrators/... to disable the feature at all,
introduce a Kconfig option to override the drivers that would like
to have the feature.

For now, this provides two ways of dumping data:
 1) with a vmalloc'ed area, that is then given to the subsystem
    and freed after retrieval or timeout
 2) with a generalized reader/free function method

We could/should add more options, e.g. a list of pages, since the
vmalloc area is very limited on some architectures.

Change-Id: I8b84d6880c8f0430d4f0454dea323cc8603efa07
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-on: https://chromium-review.googlesource.com/226540
Reviewed-by: Kees Cook <keescook@chromium.org>
FROMLIST: devcoredump: provide a one-way disable function

(From http://mid.gmane.org/1415913389-17734-1-git-send-email-johannes@sipsolutions.net)

Since device/firmware coredumps can contain private data, it can
be desirable to turn them off unconditionally to be certain that
no such data will be collected by the system.

To achieve this, provide a "disabled" sysfs class attribute that
can only be changed from 0 to 1 and not back. Upon disabling,
discard existing coredumps and stop storing new ones.

Change-Id: I9e1c9a7f375f3636ad7c9486eb1b4619b3ffc8c8
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/229495
Reviewed-by: Kees Cook <keescook@chromium.org>
CHROMIUM: config: Enable squashfs on all archs

Squashfs support for the rootfs requires this on every kernel since
the first FSI or latest stepping stone. Only lzo and gz support are
enabled because xz is too slow.

BUG=chromium:435282
TEST=kernel still builds and squashfs is enabled in the config.

Signed-off-by: Alex Deymo <deymo@chromium.org>
Change-Id: I37f84eeedc0ce0e71986ed8a0b10b93d4b83c165
Reviewed-on: https://chromium-review.googlesource.com/231164
Reviewed-by: Olof Johansson <olofj@chromium.org>