1. 15 1月, 2012 10 次提交
    • P
      dm: do not forward ioctls from logical volumes to the underlying device · ec8013be
      Paolo Bonzini 提交于
      A logical volume can map to just part of underlying physical volume.
      In this case, it must be treated like a partition.
      
      Based on a patch from Alasdair G Kergon.
      
      Cc: Alasdair G Kergon <agk@redhat.com>
      Cc: dm-devel@redhat.com
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ec8013be
    • P
      block: fail SCSI passthrough ioctls on partition devices · 0bfc96cb
      Paolo Bonzini 提交于
      Linux allows executing the SG_IO ioctl on a partition or LVM volume, and
      will pass the command to the underlying block device.  This is
      well-known, but it is also a large security problem when (via Unix
      permissions, ACLs, SELinux or a combination thereof) a program or user
      needs to be granted access only to part of the disk.
      
      This patch lets partitions forward a small set of harmless ioctls;
      others are logged with printk so that we can see which ioctls are
      actually sent.  In my tests only CDROM_GET_CAPABILITY actually occurred.
      Of course it was being sent to a (partition on a) hard disk, so it would
      have failed with ENOTTY and the patch isn't changing anything in
      practice.  Still, I'm treating it specially to avoid spamming the logs.
      
      In principle, this restriction should include programs running with
      CAP_SYS_RAWIO.  If for example I let a program access /dev/sda2 and
      /dev/sdb, it still should not be able to read/write outside the
      boundaries of /dev/sda2 independent of the capabilities.  However, for
      now programs with CAP_SYS_RAWIO will still be allowed to send the
      ioctls.  Their actions will still be logged.
      
      This patch does not affect the non-libata IDE driver.  That driver
      however already tests for bd != bd->bd_contains before issuing some
      ioctl; it could be restricted further to forbid these ioctls even for
      programs running with CAP_SYS_ADMIN/CAP_SYS_RAWIO.
      
      Cc: linux-scsi@vger.kernel.org
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: James Bottomley <JBottomley@parallels.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      [ Make it also print the command name when warning - Linus ]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0bfc96cb
    • P
      block: add and use scsi_blk_cmd_ioctl · 577ebb37
      Paolo Bonzini 提交于
      Introduce a wrapper around scsi_cmd_ioctl that takes a block device.
      
      The function will then be enhanced to detect partition block devices
      and, in that case, subject the ioctls to whitelisting.
      
      Cc: linux-scsi@vger.kernel.org
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: James Bottomley <JBottomley@parallels.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      577ebb37
    • L
      Merge tags 'devicetree-for-linus' and 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6 · 81d48f0a
      Linus Torvalds 提交于
      2nd set of device tree changes and SPI bug fixes for v3.3
      
      * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux-2.6:
        of/irq: Add interrupts-names property to name an irq resource
        of/address: Add reg-names property to name an iomem resource
      
      * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6:
        spi/tegra: depend instead of select TEGRA_SYSTEM_DMA
      81d48f0a
    • L
      Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6 · f5e4e20f
      Linus Torvalds 提交于
      2nd round of GPIO changes for v3.3 merge window
      
      * tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6:
        GPIO: sa1100: implement proper gpiolib gpio_to_irq conversion
        gpio: pl061: remove combined interrupt
        gpio: pl061: convert to use generic irq chip
        GPIO: add bindings for managed devices
        ARM: realview: convert pl061 no irq to 0 instead of -1
        gpio: pl061: convert to use 0 for no irq
        gpio: pl061: use chained_irq_* functions in irq handler
        GPIO/pl061: Add suspend resume capability
        drivers/gpio/gpio-tegra.c: use devm_request_and_ioremap
      f5e4e20f
    • L
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 4964e066
      Linus Torvalds 提交于
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (119 commits)
        MIPS: Delete unused function add_temporary_entry.
        MIPS: Set default pci cache line size.
        MIPS: Flush huge TLB
        MIPS: Octeon: Remove SYS_SUPPORTS_HIGHMEM.
        MIPS: Octeon: Add support for OCTEON II PCIe
        MIPS: Octeon: Update PCI Latency timer and enable more error reporting.
        MIPS: Alchemy: Update cpu-feature-overrides
        MIPS: Alchemy: db1200: Improve PB1200 detection.
        MIPS: Alchemy: merge Au1000 and Au1300-style IRQ controller code.
        MIPS: Alchemy: chain IRQ controllers to MIPS IRQ controller
        MIPS: Alchemy: irq: register pm at irq init time
        MIPS: Alchemy: Touchscreen support on DB1100
        MIPS: Alchemy: Hook up IrDA on DB1000/DB1100
        net/irda: convert au1k_ir to platform driver.
        MIPS: Alchemy: remove unused board headers
        MTD: nand: make au1550nd.c a platform_driver
        MIPS: Netlogic: Mark Netlogic chips as SMT capable
        MIPS: Netlogic: Add support for XLP 3XX cores
        MIPS: Netlogic: Merge some of XLR/XLP wakup code
        MIPS: Netlogic: Add default XLP config.
        ...
      
      Fix up trivial conflicts in arch/mips/kernel/{perf_event_mipsxx.c,
      traps.c} and drivers/tty/serial/Makefile
      4964e066
    • L
      Merge tag 'for-linus' of git://github.com/rustyrussell/linux · 0a80939b
      Linus Torvalds 提交于
      Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999  BFCB D920 0E6C D1AD B8F1
      
      * tag 'for-linus' of git://github.com/rustyrussell/linux:
        module_param: check that bool parameters really are bool.
        intelfbdrv.c: bailearly is an int module_param
        paride/pcd: fix bool verbose module parameter.
        module_param: make bool parameters really bool (drivers & misc)
        module_param: make bool parameters really bool (arch)
        module_param: make bool parameters really bool (core code)
        kernel/async: remove redundant declaration.
        printk: fix unnecessary module_param_name.
        lirc_parallel: fix module parameter description.
        module_param: avoid bool abuse, add bint for special cases.
        module_param: check type correctness for module_param_array
        modpost: use linker section to generate table.
        modpost: use a table rather than a giant if/else statement.
        modules: sysfs - export: taint, coresize, initsize
        kernel/params: replace DEBUGP with pr_debug
        module: replace DEBUGP with pr_debug
        module: struct module_ref should contains long fields
        module: Fix performance regression on modules with large symbol tables
        module: Add comments describing how the "strmap" logic works
      
      Fix up conflicts in scripts/mod/file2alias.c due to the new linker-
      generated table approach to adding __mod_*_device_table entries.  The
      ARM sa11x0 mcp bus needed to be converted to that too.
      0a80939b
    • L
      Merge branch 'for-3.3' of git://linux-nfs.org/~bfields/linux · 0b48d422
      Linus Torvalds 提交于
      * 'for-3.3' of git://linux-nfs.org/~bfields/linux: (31 commits)
        nfsd4: nfsd4_create_clid_dir return value is unused
        NFSD: Change name of extended attribute containing junction
        svcrpc: don't revert to SVC_POOL_DEFAULT on nfsd shutdown
        svcrpc: fix double-free on shutdown of nfsd after changing pool mode
        nfsd4: be forgiving in the absence of the recovery directory
        nfsd4: fix spurious 4.1 post-reboot failures
        NFSD: forget_delegations should use list_for_each_entry_safe
        NFSD: Only reinitilize the recall_lru list under the recall lock
        nfsd4: initialize special stateid's at compile time
        NFSd: use network-namespace-aware cache registering routines
        SUNRPC: create svc_xprt in proper network namespace
        svcrpc: update outdated BKL comment
        nfsd41: allow non-reclaim open-by-fh's in 4.1
        svcrpc: avoid memory-corruption on pool shutdown
        svcrpc: destroy server sockets all at once
        svcrpc: make svc_delete_xprt static
        nfsd: Fix oops when parsing a 0 length export
        nfsd4: Use kmemdup rather than duplicating its implementation
        nfsd4: add a separate (lockowner, inode) lookup
        nfsd4: fix CONFIG_NFSD_FAULT_INJECTION compile error
        ...
      0b48d422
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 8e63dd6e
      Linus Torvalds 提交于
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Fix unpaired __trace_hcall_entry and __trace_hcall_exit
        powerpc: Fix RCU idle and hcall tracing
      8e63dd6e
    • L
      Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · f88609a0
      Linus Torvalds 提交于
      * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        MAINTAINERS: List i2c-omap and i2c-davinci drivers
        MAINTAINERS: i2c: Add third maintainer
        i2c/gpio-i2cmux: Convert to use module_platform_driver()
        i2c/busses: Use module_platform_driver()
        i2c-dev: Use memdup_user
        i2c: Convert to DEFINE_PCI_DEVICE_TABLE
        i2c-ali1535: enable SPARC support
        i2c: Fix error value returned by several bus drivers
      f88609a0
  2. 14 1月, 2012 12 次提交
  3. 13 1月, 2012 18 次提交
    • A
      UBIFS: fix key printing · 515315a1
      Artem Bityutskiy 提交于
      Before commit 56e46742 we have had locking
      around all printing macros and we could use static buffers for creating
      key strings and printing them. However, now we do not have that locking and
      we cannot use static buffers. This commit removes the old DBGKEY() macros
      and introduces few new helper macros for printing debugging messages plus
      a key at the end. Thankfully, all the messages are already structures in
      a way that the key is printed in the end.
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      515315a1
    • A
      UBIFS: use snprintf instead of sprintf when printing keys · beba0060
      Artem Bityutskiy 提交于
      Switch to 'snprintf()' which is more secure and reliable. This is also a
      preparation to the subsequent key printing fixes.
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      beba0060
    • S
      dma-buf: Documentation update for Kconfig select · 08179456
      Sumit Semwal 提交于
      As per Linus' comment, dma-buf Kconfig entry shouldn't have an option
      text, but should be selected by the subsystems that use it.
      
      Add this information in the documentation as well.
      Signed-off-by: NSumit Semwal <sumit.semwal@ti.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      08179456
    • P
      nouveau: Support Optimus models for vga_switcheroo · d099230c
      Peter Lekensteyn 提交于
      Newer nVidia cards with Optimus do not support/use the DSM switching functions.
      Instead, it require a DSM function to be called prior to bringing a device into
      D3 state. No other _DSM calls are necessary before/after enabling/disabling a
      device. Switching between discrete and integrated GPU is not supported by
      this Optimus _DSM call, therefore return on the switching method.
      Signed-off-by: NPeter Lekensteyn <lekensteyn@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      d099230c
    • P
      nouveau: properly check for _DSM function support · 9075e85f
      Peter Lekensteyn 提交于
      According to the ACPI spec version 4, section 9.14.1, _DSM functions
      must return a value with the first bit enabled if any DSM functions are
      supported for the given UUID and revision ID. For a given function index n
      to be marked supported, bit n must be enabled.
      Signed-off-by: NPeter Lekensteyn <lekensteyn@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      9075e85f
    • D
      dma-buf: drop option text so users don't select it. · 3b32a592
      Dave Airlie 提交于
      This is going to be used by other subsystems so they should select it.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3b32a592
    • M
    • A
      gma500: Discard modes that don't fit in stolen memory · 9f821c67
      Alan Cox 提交于
      [This fixes a crash on boot if the system is plugged into an HDTV so it's
       probably appropriate to push even though it didn't make the window. We could
       be cleverer about this but the simple version seems to be the safe one]
      
      From: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
      
      At the moment we cannot allocate more than stolen memory size for framebuffers.
      To get around that issues we discard modes that doesn't fit. This is a temporary
      solution until we can freely allocate framebuffer memory.
      
      [Currently the framebuffer needs to be linear in kernel space due to limits
       in the kernel fb layer - AC]
      Signed-off-by: NPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      9f821c67
    • B
      drm: bump DRM_CONNECTOR_MAX_ENCODER from 2 to 3 · afe887df
      Ben Skeggs 提交于
      There exists at least one NVIDIA GPU (Quadro NVS 300) that has a DMS-59
      connector which is capable of supporting DisplayPort, TMDS and VGA on
      a single connector.
      
      We need to bump the allowed encoder limit to support all three configs.
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      afe887df
    • J
      drm/radeon/kms: Fix module parameter description format · 27d4d052
      Jean Delvare 提交于
      Module parameter descriptions don't take a trailing \n, otherwise it
      breaks formatting of modinfo's output. Also add missing space after
      comma.
      Signed-off-by: NJean Delvare <jdelvare@suse.de>
      Cc: David Airlie <airlied@linux.ie>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Cc: Jerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      27d4d052
    • A
      drm/radeon/kms/ni: fix packet2 handling for VM IB parser · 0b41da60
      Alex Deucher 提交于
      Packet2 is only one dword.
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      0b41da60
    • K
      ttm/dma: Remove the WARN() which is not useful. · 0e113315
      Konrad Rzeszutek Wilk 提交于
      . It was useful during development, but now on a production system
      we can get this (if the user forgot to upload the firmware):
      
      [drm] radeon: irq initialized.
      [drm] GART: num cpu pages 131072, num gpu pages 131072
      [drm] radeon: ib pool ready.
      [drm] Loading SUMO Microcode
      r600_cp: Failed to load firmware "radeon/SUMO_pfp.bin"
      atl1c 0000:03:00.0: version 1.0.1.0-NAPI.213057] [drm:evergreen_startup] *ERROR* Failed to load firmware!
      radeon 0000:00:01.0: disabling GPU acceleration
      88] radeon 0000:00:01.0: ffff8801bb782400 unpin not necessary
      ------------[ cut here ]------------
      WARNING: at /home/konrad/linux-linus/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c:956 ttm_dma_unpopulate+0x79/0x300 [ttm]()
      Hardware name: System Product Name
      Modules linked in: e1000e atl1c radeon(+) ahci libahci libata scsi_mod fbcon tileblit font ttm bitblit softcursor drm_kms_helper wmi xen_blkfront xen_netfront fb_sys_fops sysimgblt sysfillrect syscopyarea xenfs xen_privcmd
      Pid: 1600, comm: modprobe Not tainted 3.2.0-06100-ge343a895 #1
      Call Trace:
       [<ffffffff8108973a>] warn_slowpath_common+0x7a/0xb0
       [<ffffffff81089785>] warn_slowpath_null+0x15/0x20
       [<ffffffffa0060309>] ttm_dma_unpopulate+0x79/0x300 [ttm]
       [<ffffffffa01341c0>] radeon_ttm_tt_unpopulate+0x120/0x130 [radeon]
       [<ffffffffa0056e0c>] ttm_tt_destroy+0x2c/0x70 [ttm]
       [<ffffffffa0057a4e>] ttm_bo_cleanup_memtype_use+0x3e/0x80 [ttm]
       [<ffffffffa00595a1>] ttm_bo_release+0x251/0x280 [ttm]
       [<ffffffffa0059610>] ttm_bo_unref+0x40/0x60 [ttm]
       [<ffffffffa0134d02>] radeon_bo_unref+0x42/0x80 [radeon]
       [<ffffffffa0186dfb>] radeon_sa_bo_manager_fini+0x6b/0x80 [radeon]
       [<ffffffffa0146b8f>] radeon_ib_pool_fini+0x6f/0x90 [radeon]
       [<ffffffffa014be49>] r100_ib_fini+0x19/0x20 [radeon]
       [<ffffffffa017b47e>] evergreen_init+0x1ee/0x2d0 [radeon]
      
      The big WARN() has nothing to do with the culprit - which is that
      the firmware was not loaded. So lets remove the WARN() from the TTM DMA code.
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Reviewed-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      0e113315
    • L
      Merge branch 'akpm' (aka "Andrew's patch-bomb, take two") · 09946950
      Linus Torvalds 提交于
      Andrew explains:
      
       - various misc stuff
      
       - Most of the rest of MM: memcg, threaded hugepages, others.
      
       - cpumask
      
       - kexec
      
       - kdump
      
       - some direct-io performance tweaking
      
       - radix-tree optimisations
      
       - new selftests code
      
         A note on this: often people will develop a new userspace-visible
         feature and will develop userspace code to exercise/test that
         feature.  Then they merge the patch and the selftest code dies.
         Sometimes we paste it into the changelog.  Sometimes the code gets
         thrown into Documentation/(!).
      
         This saddens me.  So this patch creates a bare-bones framework which
         will henceforth allow me to ask people to include their test apps in
         the kernel tree so we can keep them alive.  Then when people enhance
         or fix the feature, I can ask them to update the test app too.
      
         The infrastruture is terribly trivial at present - let's see how it
         evolves.
      
       - checkpoint/restart feature work.
      
         A note on this: this is a project by various mad Russians to perform
         c/r mainly from userspace, with various oddball helper code added
         into the kernel where the need is demonstrated.
      
         So rather than some large central lump of code, what we have is
         little bits and pieces popping up in various places which either
         expose something new or which permit something which is normally
         kernel-private to be modified.
      
         The overall project is an ongoing thing.  I've judged that the size
         and scope of the thing means that we're more likely to be successful
         with it if we integrate the support into mainline piecemeal rather
         than allowing it all to develop out-of-tree.
      
         However I'm less confident than the developers that it will all
         eventually work! So what I'm asking them to do is to wrap each piece
         of new code inside CONFIG_CHECKPOINT_RESTORE.  So if it all
         eventually comes to tears and the project as a whole fails, it should
         be a simple matter to go through and delete all trace of it.
      
      This lot pretty much wraps up the -rc1 merge for me.
      
      * akpm: (96 commits)
        unlzo: fix input buffer free
        ramoops: update parameters only after successful init
        ramoops: fix use of rounddown_pow_of_two()
        c/r: prctl: add PR_SET_MM codes to set up mm_struct entries
        c/r: procfs: add start_data, end_data, start_brk members to /proc/$pid/stat v4
        c/r: introduce CHECKPOINT_RESTORE symbol
        selftests: new x86 breakpoints selftest
        selftests: new very basic kernel selftests directory
        radix_tree: take radix_tree_path off stack
        radix_tree: remove radix_tree_indirect_to_ptr()
        dio: optimize cache misses in the submission path
        vfs: cache request_queue in struct block_device
        fs/direct-io.c: calculate fs_count correctly in get_more_blocks()
        drivers/parport/parport_pc.c: fix warnings
        panic: don't print redundant backtraces on oops
        sysctl: add the kernel.ns_last_pid control
        kdump: add udev events for memory online/offline
        include/linux/crash_dump.h needs elf.h
        kdump: fix crash_kexec()/smp_send_stop() race in panic()
        kdump: crashk_res init check for /sys/kernel/kexec_crash_size
        ...
      09946950
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 7c17d86a
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (69 commits)
        pptp: Accept packet with seq zero
        RDS: Remove some unused iWARP code
        net: fsl: fec: handle 10Mbps speed in RMII mode
        drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c: add missing iounmap
        drivers/net/ethernet/tundra/tsi108_eth.c: add missing iounmap
        ksz884x: fix mtu for VLAN
        net_sched: sfq: add optional RED on top of SFQ
        dp83640: Fix NOHZ local_softirq_pending 08 warning
        gianfar: Fix invalid TX frames returned on error queue when time stamping
        gianfar: Fix missing sock reference when processing TX time stamps
        phylib: introduce mdiobus_alloc_size()
        net: decrement memcg jump label when limit, not usage, is changed
        net: reintroduce missing rcu_assign_pointer() calls
        inet_diag: Rename inet_diag_req_compat into inet_diag_req
        inet_diag: Rename inet_diag_req into inet_diag_req_v2
        bond_alb: don't disable softirq under bond_alb_xmit
        mac80211: fix rx->key NULL pointer dereference in promiscuous mode
        nl80211: fix old station flags compatibility
        mdio-octeon: use an unique MDIO bus name.
        mdio-gpio: use an unique MDIO bus name.
        ...
      7c17d86a
    • S
      unlzo: fix input buffer free · 35f15268
      Sascha Hauer 提交于
      unlzo modifies the pointer to in_buf, so we have to free the original
      buffer, not the modified pointer.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      Cc: Lasse Collin <lasse.collin@tukaani.org>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      35f15268
    • K
      ramoops: update parameters only after successful init · c755201e
      Kees Cook 提交于
      If a platform device exists on the system, but ramoops fails to attach to
      it, the module parameters are overridden before ramoops can fall back and
      try to use passed module parameters.  Move update to end of init routine.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Cc: Marco Stornelli <marco.stornelli@gmail.com>
      Cc: Sergiu Iordache <sergiu@chromium.org>
      Cc: Seiji Aguchi <seiji.aguchi@hds.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c755201e
    • M
      ramoops: fix use of rounddown_pow_of_two() · fdb59507
      Marco Stornelli 提交于
      The return value of rounddown_pow_of_two wasn't evaluated, so the
      operation was a no-op.
      Signed-off-by: NMarco Stornelli <marco.stornelli@gmail.com>
      Reported-by: NAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: NWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fdb59507
    • C
      c/r: prctl: add PR_SET_MM codes to set up mm_struct entries · 028ee4be
      Cyrill Gorcunov 提交于
      When we restore a task we need to set up text, data and data heap sizes
      from userspace to the values a task had at checkpoint time.  This patch
      adds auxilary prctl codes for that.
      
      While most of them have a statistical nature (their values are involved
      into calculation of /proc/<pid>/statm output) the start_brk and brk values
      are used to compute an allowed size of program data segment expansion.
      Which means an arbitrary changes of this values might be dangerous
      operation.  So to restrict access the following requirements applied to
      prctl calls:
      
       - The process has to have CAP_SYS_ADMIN capability granted.
       - For all opcodes except start_brk/brk members an appropriate
         VMA area must exist and should fit certain VMA flags,
         such as:
         - code segment must be executable but not writable;
         - data segment must not be executable.
      
      start_brk/brk values must not intersect with data segment and must not
      exceed RLIMIT_DATA resource limit.
      
      Still the main guard is CAP_SYS_ADMIN capability check.
      
      Note the kernel should be compiled with CONFIG_CHECKPOINT_RESTORE support
      otherwise these prctl calls will return -EINVAL.
      
      [akpm@linux-foundation.org: cache current->mm in a local, saving 200 bytes text]
      Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Reviewed-by: NKees Cook <keescook@chromium.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Andrew Vagin <avagin@openvz.org>
      Cc: Serge Hallyn <serge.hallyn@canonical.com>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      Cc: Vasiliy Kulikov <segoon@openwall.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      028ee4be