No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tom Abraham a06ad633a3 swap: divide-by-zero when zero length swap file on ssd
Calling swapon() on a zero length swap file on SSD can lead to a
divide-by-zero.

Although creating such files isn't possible with mkswap and they woud be
considered invalid, it would be better for the swapon code to be more
robust and handle this condition gracefully (return -EINVAL).
Especially since the fix is small and straightforward.

To help with wear leveling on SSD, the swapon syscall calculates a
random position in the swap file using modulo p->highest_bit, which is
set to maxpages - 1 in read_swap_header.

If the swap file is zero length, read_swap_header sets maxpages=1 and
last_page=0, resulting in p->highest_bit=0 and we divide-by-zero when we
modulo p->highest_bit in swapon syscall.

This can be prevented by having read_swap_header return zero if
last_page is zero.

Link: http://lkml.kernel.org/r/5AC747C1020000A7001FA82C@prv-mh.provo.novell.com
Signed-off-by: Thomas Abraham <tabraham@suse.com>
Reported-by: <Mark.Landis@Teradata.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-11 10:28:31 -07:00
arch c6x changes 4.17 2018-04-10 11:50:14 -07:00
block for-4.17/block-20180402 2018-04-05 14:27:02 -07:00
certs
crypto MIPS changes for 4.17 2018-04-10 11:39:22 -07:00
Documentation Documentation/vm/hmm.txt: typos and syntaxes fixes 2018-04-11 10:28:31 -07:00
drivers mm: check __highest_present_section_nr directly in memory_dev_init() 2018-04-11 10:28:31 -07:00
firmware
fs dcache: account external names as indirectly reclaimable memory 2018-04-11 10:28:29 -07:00
include mm: memcg: make sure memory.events is uptodate when waking pollers 2018-04-11 10:28:31 -07:00
init New features: 2018-04-10 11:27:30 -07:00
ipc Merge branch 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2018-04-03 19:15:32 -07:00
kernel New features: 2018-04-10 11:27:30 -07:00
lib New features: 2018-04-10 11:27:30 -07:00
LICENSES
mm swap: divide-by-zero when zero length swap file on ssd 2018-04-11 10:28:31 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-04-09 17:04:10 -07:00
samples VFIO updates for v4.17-rc1 2018-04-06 19:44:27 -07:00
scripts Leaking-addresses patches for 4.17-rc1 2018-04-07 11:56:33 -07:00
security New features: 2018-04-10 11:27:30 -07:00
sound sound fixes for 4.17-rc1 2018-04-10 10:16:04 -07:00
tools New features: 2018-04-10 11:27:30 -07:00
usr
virt KVM/ARM updates for v4.17 2018-03-28 16:09:09 +02:00
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap Merge candidates for 4.17 merge window 2018-04-06 17:35:43 -07:00
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS mm/hmm: documentation editorial update to HMM documentation 2018-04-11 10:28:30 -07:00
Makefile Kconfig updates for v4.17 2018-04-03 16:28:01 -07:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
See Documentation/00-INDEX for a list of what is contained in each file.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.