Merge branch 'akpm' (patches from Andrew Morton)
Merge misc fixes from Andrew Morton: "A bunch of fixes" * emailed patches fron Andrew Morton <akpm@linux-foundation.org>: ocfs2: check existence of old dentry in ocfs2_link() ocfs2: update inode size after zeroing the hole ocfs2: fix issue that ocfs2_setattr() does not deal with new_i_size==i_size mm/memory-failure.c: move refcount only in !MF_COUNT_INCREASED smp.h: fix x86+cpu.c sparse warnings about arch nonboot CPU calls mm: fix page leak at nfs_symlink() slub: do not assert not having lock in removing freed partial gitignore: add all.config ocfs2: fix ocfs2_sync_file() if filesystem is readonly drivers/edac/edac_mc_sysfs.c: poll timeout cannot be zero fs/file.c:fdtable: avoid triggering OOMs from alloc_fdmem xen: properly account for _PAGE_NUMA during xen pte translations mm/slub.c: list_lock may not be held in some circumstances drivers/md/bcache/extents.c: use %zi to format size_t vmcore: prevent PT_NOTE p_memsz overflow during header update drivers/message/i2o/i2o_config.c: fix deadlock in compat_ioctl(I2OGETIOPS) Documentation/: update 00-INDEX files checkpatch: fix detection of git repository get_maintainer: fix detection of git repository drivers/misc/sgi-gru/grukdump.c: unlocking should be conditional in gru_dump_context()
This commit is contained in:
commit
6792dfe383
44 changed files with 316 additions and 85 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -92,3 +92,6 @@ extra_certificates
|
|||
signing_key.priv
|
||||
signing_key.x509
|
||||
x509.genkey
|
||||
|
||||
# Kconfig presets
|
||||
all.config
|
||||
|
|
|
@ -29,6 +29,8 @@ DMA-ISA-LPC.txt
|
|||
- How to do DMA with ISA (and LPC) devices.
|
||||
DMA-attributes.txt
|
||||
- listing of the various possible attributes a DMA region can have
|
||||
dmatest.txt
|
||||
- how to compile, configure and use the dmatest system.
|
||||
DocBook/
|
||||
- directory with DocBook templates etc. for kernel documentation.
|
||||
EDID/
|
||||
|
@ -77,6 +79,8 @@ arm/
|
|||
- directory with info about Linux on the ARM architecture.
|
||||
arm64/
|
||||
- directory with info about Linux on the 64 bit ARM architecture.
|
||||
assoc_array.txt
|
||||
- generic associative array intro.
|
||||
atomic_ops.txt
|
||||
- semantics and behavior of atomic and bitmask operations.
|
||||
auxdisplay/
|
||||
|
@ -87,6 +91,8 @@ bad_memory.txt
|
|||
- how to use kernel parameters to exclude bad RAM regions.
|
||||
basic_profiling.txt
|
||||
- basic instructions for those who wants to profile Linux kernel.
|
||||
bcache.txt
|
||||
- Block-layer cache on fast SSDs to improve slow (raid) I/O performance.
|
||||
binfmt_misc.txt
|
||||
- info on the kernel support for extra binary formats.
|
||||
blackfin/
|
||||
|
@ -171,6 +177,8 @@ early-userspace/
|
|||
- info about initramfs, klibc, and userspace early during boot.
|
||||
edac.txt
|
||||
- information on EDAC - Error Detection And Correction
|
||||
efi-stub.txt
|
||||
- How to use the EFI boot stub to bypass GRUB or elilo on EFI systems.
|
||||
eisa.txt
|
||||
- info on EISA bus support.
|
||||
email-clients.txt
|
||||
|
@ -195,8 +203,8 @@ futex-requeue-pi.txt
|
|||
- info on requeueing of tasks from a non-PI futex to a PI futex
|
||||
gcov.txt
|
||||
- use of GCC's coverage testing tool "gcov" with the Linux kernel
|
||||
gpio.txt
|
||||
- overview of GPIO (General Purpose Input/Output) access conventions.
|
||||
gpio/
|
||||
- gpio related documentation
|
||||
hid/
|
||||
- directory with information on human interface devices
|
||||
highuid.txt
|
||||
|
@ -255,6 +263,8 @@ kernel-docs.txt
|
|||
- listing of various WWW + books that document kernel internals.
|
||||
kernel-parameters.txt
|
||||
- summary listing of command line / boot prompt args for the kernel.
|
||||
kernel-per-CPU-kthreads.txt
|
||||
- List of all per-CPU kthreads and how they introduce jitter.
|
||||
kmemcheck.txt
|
||||
- info on dynamic checker that detects uses of uninitialized memory.
|
||||
kmemleak.txt
|
||||
|
@ -299,8 +309,6 @@ memory-devices/
|
|||
- directory with info on parts like the Texas Instruments EMIF driver
|
||||
memory-hotplug.txt
|
||||
- Hotpluggable memory support, how to use and current status.
|
||||
memory.txt
|
||||
- info on typical Linux memory problems.
|
||||
metag/
|
||||
- directory with info about Linux on Meta architecture.
|
||||
mips/
|
||||
|
@ -311,6 +319,8 @@ mmc/
|
|||
- directory with info about the MMC subsystem
|
||||
mn10300/
|
||||
- directory with info about the mn10300 architecture port
|
||||
module-signing.txt
|
||||
- Kernel module signing for increased security when loading modules.
|
||||
mtd/
|
||||
- directory with info about memory technology devices (flash)
|
||||
mono.txt
|
||||
|
@ -343,6 +353,8 @@ pcmcia/
|
|||
- info on the Linux PCMCIA driver.
|
||||
percpu-rw-semaphore.txt
|
||||
- RCU based read-write semaphore optimized for locking for reading
|
||||
phy.txt
|
||||
- Description of the generic PHY framework.
|
||||
pi-futex.txt
|
||||
- documentation on lightweight priority inheritance futexes.
|
||||
pinctrl.txt
|
||||
|
@ -431,6 +443,8 @@ sysrq.txt
|
|||
- info on the magic SysRq key.
|
||||
target/
|
||||
- directory with info on generating TCM v4 fabric .ko modules
|
||||
this_cpu_ops.txt
|
||||
- List rationale behind and the way to use this_cpu operations.
|
||||
thermal/
|
||||
- directory with information on managing thermal issues (CPU/temp)
|
||||
trace/
|
||||
|
@ -469,6 +483,8 @@ wimax/
|
|||
- directory with info about Intel Wireless Wimax Connections
|
||||
workqueue.txt
|
||||
- information on the Concurrency Managed Workqueue implementation
|
||||
ww-mutex-design.txt
|
||||
- Intro to Mutex wait/would deadlock handling.s
|
||||
x86/x86_64/
|
||||
- directory with info on Linux support for AMD x86-64 (Hammer) machines.
|
||||
xtensa/
|
||||
|
|
|
@ -8,6 +8,8 @@ listRCU.txt
|
|||
- Using RCU to Protect Read-Mostly Linked Lists
|
||||
lockdep.txt
|
||||
- RCU and lockdep checking
|
||||
lockdep-splat.txt
|
||||
- RCU Lockdep splats explained.
|
||||
NMI-RCU.txt
|
||||
- Using RCU to Protect Dynamic NMI Handlers
|
||||
rcubarrier.txt
|
||||
|
|
|
@ -4,6 +4,8 @@ Booting
|
|||
- requirements for booting
|
||||
Interrupts
|
||||
- ARM Interrupt subsystem documentation
|
||||
IXP4xx
|
||||
- Intel IXP4xx Network processor.
|
||||
msm
|
||||
- MSM specific documentation
|
||||
Netwinder
|
||||
|
@ -24,8 +26,16 @@ SPEAr
|
|||
- ST SPEAr platform Linux Overview
|
||||
VFP/
|
||||
- Release notes for Linux Kernel Vector Floating Point support code
|
||||
cluster-pm-race-avoidance.txt
|
||||
- Algorithm for CPU and Cluster setup/teardown
|
||||
empeg/
|
||||
- Ltd's Empeg MP3 Car Audio Player
|
||||
firmware.txt
|
||||
- Secure firmware registration and calling.
|
||||
kernel_mode_neon.txt
|
||||
- How to use NEON instructions in kernel mode
|
||||
kernel_user_helpers.txt
|
||||
- Helper functions in kernel space made available for userspace.
|
||||
mem_alignment
|
||||
- alignment abort handler documentation
|
||||
memory.txt
|
||||
|
@ -34,3 +44,7 @@ nwfpe/
|
|||
- NWFPE floating point emulator documentation
|
||||
swp_emulation
|
||||
- SWP/SWPB emulation handler/logging description
|
||||
tcm.txt
|
||||
- ARM Tightly Coupled Memory
|
||||
vlocks.txt
|
||||
- Voting locks, low-level mechanism relying on memory system atomic writes.
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
00-INDEX
|
||||
- This file
|
||||
|
||||
Makefile
|
||||
- Makefile for gptimers example file.
|
||||
bfin-gpio-notes.txt
|
||||
- Notes in developing/using bfin-gpio driver.
|
||||
|
||||
bfin-spi-notes.txt
|
||||
- Notes for using bfin spi bus driver.
|
||||
gptimers-example.c
|
||||
- gptimers example
|
||||
|
|
|
@ -14,6 +14,8 @@ deadline-iosched.txt
|
|||
- Deadline IO scheduler tunables
|
||||
ioprio.txt
|
||||
- Block io priorities (in CFQ scheduler)
|
||||
null_blk.txt
|
||||
- Null block for block-layer benchmarking.
|
||||
queue-sysfs.txt
|
||||
- Queue's sysfs entries
|
||||
request.txt
|
||||
|
|
|
@ -8,3 +8,5 @@ https://lists.ozlabs.org/listinfo/devicetree-discuss
|
|||
- this file
|
||||
booting-without-of.txt
|
||||
- Booting Linux without Open Firmware, describes history and format of device trees.
|
||||
usage-model.txt
|
||||
- How Linux uses DT and what DT aims to solve.
|
|
@ -5,6 +5,8 @@ please mail me.
|
|||
|
||||
00-INDEX
|
||||
- this file.
|
||||
api.txt
|
||||
- The frame buffer API between applications and buffer devices.
|
||||
arkfb.txt
|
||||
- info on the fbdev driver for ARK Logic chips.
|
||||
aty128fb.txt
|
||||
|
@ -51,12 +53,16 @@ sh7760fb.txt
|
|||
- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
|
||||
sisfb.txt
|
||||
- info on the framebuffer device driver for various SiS chips.
|
||||
sm501.txt
|
||||
- info on the framebuffer device driver for sm501 videoframebuffer.
|
||||
sstfb.txt
|
||||
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
||||
tgafb.txt
|
||||
- info on the TGA (DECChip 21030) frame buffer driver.
|
||||
tridentfb.txt
|
||||
info on the framebuffer driver for some Trident chip based cards.
|
||||
udlfb.txt
|
||||
- Driver for DisplayLink USB 2.0 chips.
|
||||
uvesafb.txt
|
||||
- info on the userspace VESA (VBE2+ compliant) frame buffer device.
|
||||
vesafb.txt
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
- this file (info on some of the filesystems supported by linux).
|
||||
Locking
|
||||
- info on locking rules as they pertain to Linux VFS.
|
||||
Makefile
|
||||
- Makefile for building the filsystems-part of DocBook.
|
||||
9p.txt
|
||||
- 9p (v9fs) is an implementation of the Plan 9 remote fs protocol.
|
||||
adfs.txt
|
||||
|
|
|
@ -12,6 +12,8 @@ nfs41-server.txt
|
|||
- info on the Linux server implementation of NFSv4 minor version 1.
|
||||
nfs-rdma.txt
|
||||
- how to install and setup the Linux NFS/RDMA client and server software
|
||||
nfsd-admin-interfaces.txt
|
||||
- Administrative interfaces for nfsd.
|
||||
nfsroot.txt
|
||||
- short guide on setting up a diskless box with NFS root filesystem.
|
||||
pnfs.txt
|
||||
|
@ -20,5 +22,5 @@ rpc-cache.txt
|
|||
- introduction to the caching mechanisms in the sunrpc layer.
|
||||
idmapper.txt
|
||||
- information for configuring request-keys to be used by idmapper
|
||||
knfsd-rpcgss.txt
|
||||
rpc-server-gss.txt
|
||||
- Information on GSS authentication support in the NFS Server
|
||||
|
|
|
@ -10,3 +10,5 @@ ide-tape.txt
|
|||
- info on the IDE ATAPI streaming tape driver
|
||||
ide.txt
|
||||
- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
|
||||
warm-plug-howto.txt
|
||||
- using sysfs to remove and add IDE devices.
|
|
@ -1,13 +1,15 @@
|
|||
00-INDEX
|
||||
- This file
|
||||
acer-wmi.txt
|
||||
- information on the Acer Laptop WMI Extras driver.
|
||||
Makefile
|
||||
- Makefile for building dslm example program.
|
||||
asus-laptop.txt
|
||||
- information on the Asus Laptop Extras driver.
|
||||
disk-shock-protection.txt
|
||||
- information on hard disk shock protection.
|
||||
dslm.c
|
||||
- Simple Disk Sleep Monitor program
|
||||
hpfall.c
|
||||
- (HP) laptop accelerometer program for disk protection.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
sony-laptop.txt
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
00-INDEX
|
||||
- This file
|
||||
leds-blinkm.txt
|
||||
- Driver for BlinkM LED-devices.
|
||||
leds-class.txt
|
||||
- documents LED handling under Linux.
|
||||
leds-lp3944.txt
|
||||
|
@ -12,3 +16,7 @@ leds-lp55xx.txt
|
|||
- description about lp55xx common driver.
|
||||
leds-lm3556.txt
|
||||
- notes on how to use the leds-lm3556 driver.
|
||||
ledtrig-oneshot.txt
|
||||
- One-shot LED trigger for both sporadic and dense events.
|
||||
ledtrig-transient.txt
|
||||
- LED Transient Trigger, one shot timer activation.
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
00-INDEX
|
||||
- this file
|
||||
README.buddha
|
||||
- Amiga Buddha and Catweasel IDE Driver
|
||||
kernel-options.txt
|
||||
- command line options for Linux/m68k
|
||||
|
||||
|
|
|
@ -6,8 +6,14 @@
|
|||
- information on the 3Com Etherlink III Series Ethernet cards.
|
||||
6pack.txt
|
||||
- info on the 6pack protocol, an alternative to KISS for AX.25
|
||||
DLINK.txt
|
||||
- info on the D-Link DE-600/DE-620 parallel port pocket adapters
|
||||
LICENSE.qla3xxx
|
||||
- GPLv2 for QLogic Linux Networking HBA Driver
|
||||
LICENSE.qlge
|
||||
- GPLv2 for QLogic Linux qlge NIC Driver
|
||||
LICENSE.qlcnic
|
||||
- GPLv2 for QLogic Linux qlcnic NIC Driver
|
||||
Makefile
|
||||
- Makefile for docsrc.
|
||||
PLIP.txt
|
||||
- PLIP: The Parallel Line Internet Protocol device driver
|
||||
README.ipw2100
|
||||
|
@ -17,7 +23,7 @@ README.ipw2200
|
|||
README.sb1000
|
||||
- info on General Instrument/NextLevel SURFboard1000 cable modem.
|
||||
alias.txt
|
||||
- info on using alias network devices
|
||||
- info on using alias network devices.
|
||||
arcnet-hardware.txt
|
||||
- tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
|
||||
arcnet.txt
|
||||
|
@ -80,7 +86,7 @@ framerelay.txt
|
|||
- info on using Frame Relay/Data Link Connection Identifier (DLCI).
|
||||
gen_stats.txt
|
||||
- Generic networking statistics for netlink users.
|
||||
generic_hdlc.txt
|
||||
generic-hdlc.txt
|
||||
- The generic High Level Data Link Control (HDLC) layer.
|
||||
generic_netlink.txt
|
||||
- info on Generic Netlink
|
||||
|
@ -88,6 +94,8 @@ gianfar.txt
|
|||
- Gianfar Ethernet Driver.
|
||||
i40e.txt
|
||||
- README for the Intel Ethernet Controller XL710 Driver (i40e).
|
||||
i40evf.txt
|
||||
- Short note on the Driver for the Intel(R) XL710 X710 Virtual Function
|
||||
ieee802154.txt
|
||||
- Linux IEEE 802.15.4 implementation, API and drivers
|
||||
igb.txt
|
||||
|
@ -102,6 +110,8 @@ ipddp.txt
|
|||
- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
|
||||
iphase.txt
|
||||
- Interphase PCI ATM (i)Chip IA Linux driver info.
|
||||
ipsec.txt
|
||||
- Note on not compressing IPSec payload and resulting failed policy check.
|
||||
ipv6.txt
|
||||
- Options to the ipv6 kernel module.
|
||||
ipvs-sysctl.txt
|
||||
|
@ -120,6 +130,8 @@ lapb-module.txt
|
|||
- programming information of the LAPB module.
|
||||
ltpc.txt
|
||||
- the Apple or Farallon LocalTalk PC card driver
|
||||
mac80211-auth-assoc-deauth.txt
|
||||
- authentication and association / deauth-disassoc with max80211
|
||||
mac80211-injection.txt
|
||||
- HOWTO use packet injection with mac80211
|
||||
multiqueue.txt
|
||||
|
@ -134,6 +146,10 @@ netdevices.txt
|
|||
- info on network device driver functions exported to the kernel.
|
||||
netif-msg.txt
|
||||
- Design of the network interface message level setting (NETIF_MSG_*).
|
||||
netlink_mmap.txt
|
||||
- memory mapped I/O with netlink
|
||||
nf_conntrack-sysctl.txt
|
||||
- list of netfilter-sysctl knobs.
|
||||
nfc.txt
|
||||
- The Linux Near Field Communication (NFS) subsystem.
|
||||
openvswitch.txt
|
||||
|
@ -176,7 +192,7 @@ skfp.txt
|
|||
- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
|
||||
smc9.txt
|
||||
- the driver for SMC's 9000 series of Ethernet cards
|
||||
spider-net.txt
|
||||
spider_net.txt
|
||||
- README for the Spidernet Driver (as found in PS3 / Cell BE).
|
||||
stmmac.txt
|
||||
- README for the STMicro Synopsys Ethernet driver.
|
||||
|
@ -188,6 +204,8 @@ tcp.txt
|
|||
- short blurb on how TCP output takes place.
|
||||
tcp-thin.txt
|
||||
- kernel tuning options for low rate 'thin' TCP streams.
|
||||
team.txt
|
||||
- pointer to information for ethernet teaming devices.
|
||||
tlan.txt
|
||||
- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
|
||||
tproxy.txt
|
||||
|
@ -200,6 +218,8 @@ vortex.txt
|
|||
- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
|
||||
vxge.txt
|
||||
- README for the Neterion X3100 PCIe Server Adapter.
|
||||
vxlan.txt
|
||||
- Virtual extensible LAN overview
|
||||
x25.txt
|
||||
- general info on X.25 development.
|
||||
x25-iface.txt
|
||||
|
|
|
@ -4,6 +4,8 @@ apm-acpi.txt
|
|||
- basic info about the APM and ACPI support.
|
||||
basic-pm-debugging.txt
|
||||
- Debugging suspend and resume
|
||||
charger-manager.txt
|
||||
- Battery charger management.
|
||||
devices.txt
|
||||
- How drivers interact with system-wide power management
|
||||
drivers-testing.txt
|
||||
|
@ -22,6 +24,8 @@ pm_qos_interface.txt
|
|||
- info on Linux PM Quality of Service interface
|
||||
power_supply_class.txt
|
||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||
runtime_pm.txt
|
||||
- Power management framework for I/O devices.
|
||||
s2ram.txt
|
||||
- How to get suspend to ram working (and debug it when it isn't)
|
||||
states.txt
|
||||
|
@ -38,7 +42,5 @@ tricks.txt
|
|||
- How to trick software suspend (to disk) into working when it isn't
|
||||
userland-swsusp.txt
|
||||
- Experimental implementation of software suspend in userspace
|
||||
video_extension.txt
|
||||
- ACPI video extensions
|
||||
video.txt
|
||||
- Video issues during resume from suspend
|
||||
|
|
|
@ -16,11 +16,13 @@ Debugging390.txt
|
|||
- hints for debugging on s390 systems.
|
||||
driver-model.txt
|
||||
- information on s390 devices and the driver model.
|
||||
kvm.txt
|
||||
- ioctl calls to /dev/kvm on s390.
|
||||
monreader.txt
|
||||
- information on accessing the z/VM monitor stream from Linux.
|
||||
qeth.txt
|
||||
- HiperSockets Bridge Port Support.
|
||||
s390dbf.txt
|
||||
- information on using the s390 debug feature.
|
||||
TAPE
|
||||
- information on the driver for channel-attached tapes.
|
||||
zfcpdump
|
||||
zfcpdump.txt
|
||||
- information on the s390 SCSI dump tool.
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
- this file.
|
||||
sched-arch.txt
|
||||
- CPU Scheduler implementation hints for architecture specific code.
|
||||
sched-bwc.txt
|
||||
- CFS bandwidth control overview.
|
||||
sched-design-CFS.txt
|
||||
- goals, design and implementation of the Completely Fair Scheduler.
|
||||
sched-domains.txt
|
||||
|
|
|
@ -36,6 +36,8 @@ NinjaSCSI.txt
|
|||
- info on WorkBiT NinjaSCSI-32/32Bi driver
|
||||
aacraid.txt
|
||||
- Driver supporting Adaptec RAID controllers
|
||||
advansys.txt
|
||||
- List of Advansys Host Adapters
|
||||
aha152x.txt
|
||||
- info on driver for Adaptec AHA152x based adapters
|
||||
aic79xx.txt
|
||||
|
@ -44,6 +46,12 @@ aic7xxx.txt
|
|||
- info on driver for Adaptec controllers
|
||||
arcmsr_spec.txt
|
||||
- ARECA FIRMWARE SPEC (for IOP331 adapter)
|
||||
bfa.txt
|
||||
- Brocade FC/FCOE adapter driver.
|
||||
bnx2fc.txt
|
||||
- FCoE hardware offload for Broadcom network interfaces.
|
||||
cxgb3i.txt
|
||||
- Chelsio iSCSI Linux Driver
|
||||
dc395x.txt
|
||||
- README file for the dc395x SCSI driver
|
||||
dpti.txt
|
||||
|
@ -52,18 +60,24 @@ dtc3x80.txt
|
|||
- info on driver for DTC 2x80 based adapters
|
||||
g_NCR5380.txt
|
||||
- info on driver for NCR5380 and NCR53c400 based adapters
|
||||
hpsa.txt
|
||||
- HP Smart Array Controller SCSI driver.
|
||||
hptiop.txt
|
||||
- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
|
||||
in2000.txt
|
||||
- info on in2000 driver
|
||||
libsas.txt
|
||||
- Serial Attached SCSI management layer.
|
||||
link_power_management_policy.txt
|
||||
- Link power management options.
|
||||
lpfc.txt
|
||||
- LPFC driver release notes
|
||||
megaraid.txt
|
||||
- Common Management Module, shared code handling ioctls for LSI drivers
|
||||
ncr53c8xx.txt
|
||||
- info on driver for NCR53c8xx based adapters
|
||||
osd.txt
|
||||
Object-Based Storage Device, command set introduction.
|
||||
osst.txt
|
||||
- info on driver for OnStream SC-x0 SCSI tape
|
||||
ppa.txt
|
||||
|
@ -74,6 +88,8 @@ scsi-changer.txt
|
|||
- README for the SCSI media changer driver
|
||||
scsi-generic.txt
|
||||
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
||||
scsi-parameters.txt
|
||||
- List of SCSI-parameters to pass to the kernel at module load-time.
|
||||
scsi.txt
|
||||
- short blurb on using SCSI support as a module.
|
||||
scsi_mid_low_api.txt
|
||||
|
|
|
@ -4,10 +4,12 @@ README.cycladesZ
|
|||
- info on Cyclades-Z firmware loading.
|
||||
digiepca.txt
|
||||
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
||||
hayes-esp.txt
|
||||
- info on using the Hayes ESP serial driver.
|
||||
driver
|
||||
- intro to the low level serial driver.
|
||||
moxa-smartio
|
||||
- file with info on installing/using Moxa multiport serial driver.
|
||||
n_gsm.txt
|
||||
- GSM 0710 tty multiplexer howto.
|
||||
riscom8.txt
|
||||
- notes on using the RISCom/8 multi-port serial driver.
|
||||
rocket.txt
|
||||
|
|
22
Documentation/spi/00-INDEX
Normal file
22
Documentation/spi/00-INDEX
Normal file
|
@ -0,0 +1,22 @@
|
|||
00-INDEX
|
||||
- this file.
|
||||
Makefile
|
||||
- Makefile for the example sourcefiles.
|
||||
butterfly
|
||||
- AVR Butterfly SPI driver overview and pin configuration.
|
||||
ep93xx_spi
|
||||
- Basic EP93xx SPI driver configuration.
|
||||
pxa2xx
|
||||
- PXA2xx SPI master controller build by spi_message fifo wq
|
||||
spidev
|
||||
- Intro to the userspace API for spi devices
|
||||
spidev_fdx.c
|
||||
- spidev example file
|
||||
spi-lm70llp
|
||||
- Connecting an LM70-LLP sensor to the kernel via the SPI subsys.
|
||||
spi-sc18is602
|
||||
- NXP SC18IS602/603 I2C-bus to SPI bridge
|
||||
spi-summary
|
||||
- (Linux) SPI overview. If unsure about SPI or SPI in Linux, start here.
|
||||
spidev_test.c
|
||||
- SPI testing utility.
|
|
@ -8,6 +8,8 @@ hpet_example.c
|
|||
- sample hpet timer test program
|
||||
hrtimers.txt
|
||||
- subsystem for high-resolution kernel timers
|
||||
Makefile
|
||||
- Build and link hpet_example
|
||||
NO_HZ.txt
|
||||
- Summary of the different methods for the scheduler clock-interrupts management.
|
||||
timers-howto.txt
|
||||
|
|
|
@ -20,5 +20,7 @@ ppc-pv.txt
|
|||
- the paravirtualization interface on PowerPC.
|
||||
review-checklist.txt
|
||||
- review checklist for KVM patches.
|
||||
s390-diag.txt
|
||||
- Diagnose hypercall description (for IBM S/390)
|
||||
timekeeping.txt
|
||||
- timekeeping virtualization for x86-based architectures.
|
||||
|
|
|
@ -16,8 +16,6 @@ hwpoison.txt
|
|||
- explains what hwpoison is
|
||||
ksm.txt
|
||||
- how to use the Kernel Samepage Merging feature.
|
||||
locking
|
||||
- info on how locking and synchronization is done in the Linux vm code.
|
||||
numa
|
||||
- information about NUMA specific code in the Linux vm.
|
||||
numa_memory_policy.txt
|
||||
|
@ -32,6 +30,8 @@ slub.txt
|
|||
- a short users guide for SLUB.
|
||||
soft-dirty.txt
|
||||
- short explanation for soft-dirty PTEs
|
||||
split_page_table_lock
|
||||
- Separate per-table lock to improve scalability of the old page_table_lock.
|
||||
transhuge.txt
|
||||
- Transparent Hugepage Support, alternative way of using hugepages.
|
||||
unevictable-lru.txt
|
||||
|
|
|
@ -4,7 +4,9 @@ ds2482
|
|||
- The Maxim/Dallas Semiconductor DS2482 provides 1-wire busses.
|
||||
ds2490
|
||||
- The Maxim/Dallas Semiconductor DS2490 builds USB <-> W1 bridges.
|
||||
mxc_w1
|
||||
mxc-w1
|
||||
- W1 master controller driver found on Freescale MX2/MX3 SoCs
|
||||
omap-hdq
|
||||
- HDQ/1-wire module of TI OMAP 2430/3430.
|
||||
w1-gpio
|
||||
- GPIO 1-wire bus master driver.
|
||||
|
|
|
@ -4,3 +4,5 @@ w1_therm
|
|||
- The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
|
||||
w1_ds2423
|
||||
- The Maxim/Dallas Semiconductor ds2423 counter device.
|
||||
w1_ds28e04
|
||||
- The Maxim/Dallas Semiconductor ds28e04 eeprom.
|
||||
|
|
|
@ -1,6 +1,20 @@
|
|||
00-INDEX
|
||||
- this file
|
||||
mtrr.txt
|
||||
- how to use x86 Memory Type Range Registers to increase performance
|
||||
boot.txt
|
||||
- List of boot protocol versions
|
||||
early-microcode.txt
|
||||
- How to load microcode from an initrd-CPIO archive early to fix CPU issues.
|
||||
earlyprintk.txt
|
||||
- Using earlyprintk with a USB2 debug port key.
|
||||
entry_64.txt
|
||||
- Describe (some of the) kernel entry points for x86.
|
||||
exception-tables.txt
|
||||
- why and how Linux kernel uses exception tables on x86
|
||||
mtrr.txt
|
||||
- how to use x86 Memory Type Range Registers to increase performance
|
||||
pat.txt
|
||||
- Page Attribute Table intro and API
|
||||
usb-legacy-support.txt
|
||||
- how to fix/avoid quirks when using emulated PS/2 mouse/keyboard.
|
||||
zero-page.txt
|
||||
- layout of the first page of memory.
|
||||
|
|
|
@ -445,10 +445,20 @@ static inline int pte_same(pte_t a, pte_t b)
|
|||
return a.pte == b.pte;
|
||||
}
|
||||
|
||||
static inline int pteval_present(pteval_t pteval)
|
||||
{
|
||||
/*
|
||||
* Yes Linus, _PAGE_PROTNONE == _PAGE_NUMA. Expressing it this
|
||||
* way clearly states that the intent is that protnone and numa
|
||||
* hinting ptes are considered present for the purposes of
|
||||
* pagetable operations like zapping, protection changes, gup etc.
|
||||
*/
|
||||
return pteval & (_PAGE_PRESENT | _PAGE_PROTNONE | _PAGE_NUMA);
|
||||
}
|
||||
|
||||
static inline int pte_present(pte_t a)
|
||||
{
|
||||
return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE |
|
||||
_PAGE_NUMA);
|
||||
return pteval_present(pte_flags(a));
|
||||
}
|
||||
|
||||
#define pte_accessible pte_accessible
|
||||
|
|
|
@ -365,7 +365,7 @@ void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
|
|||
/* Assume pteval_t is equivalent to all the other *val_t types. */
|
||||
static pteval_t pte_mfn_to_pfn(pteval_t val)
|
||||
{
|
||||
if (val & _PAGE_PRESENT) {
|
||||
if (pteval_present(val)) {
|
||||
unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
||||
unsigned long pfn = mfn_to_pfn(mfn);
|
||||
|
||||
|
@ -381,7 +381,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
|
|||
|
||||
static pteval_t pte_pfn_to_mfn(pteval_t val)
|
||||
{
|
||||
if (val & _PAGE_PRESENT) {
|
||||
if (pteval_present(val)) {
|
||||
unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
||||
pteval_t flags = val & PTE_FLAGS_MASK;
|
||||
unsigned long mfn;
|
||||
|
|
|
@ -61,7 +61,7 @@ static int edac_set_poll_msec(const char *val, struct kernel_param *kp)
|
|||
ret = kstrtol(val, 0, &l);
|
||||
if (ret)
|
||||
return ret;
|
||||
if ((int)l != l)
|
||||
if (!l || ((int)l != l))
|
||||
return -EINVAL;
|
||||
*((int *)kp->arg) = l;
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@ static bool btree_ptr_bad_expensive(struct btree *b, const struct bkey *k)
|
|||
mutex_unlock(&b->c->bucket_lock);
|
||||
bch_extent_to_text(buf, sizeof(buf), k);
|
||||
btree_bug(b,
|
||||
"inconsistent btree pointer %s: bucket %li pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i",
|
||||
"inconsistent btree pointer %s: bucket %zi pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i",
|
||||
buf, PTR_BUCKET_NR(b->c, k, i), atomic_read(&g->pin),
|
||||
g->prio, g->gen, g->last_gc, GC_MARK(g), g->gc_gen);
|
||||
return true;
|
||||
|
|
|
@ -754,19 +754,19 @@ static long i2o_cfg_compat_ioctl(struct file *file, unsigned cmd,
|
|||
unsigned long arg)
|
||||
{
|
||||
int ret;
|
||||
mutex_lock(&i2o_cfg_mutex);
|
||||
switch (cmd) {
|
||||
case I2OGETIOPS:
|
||||
ret = i2o_cfg_ioctl(file, cmd, arg);
|
||||
break;
|
||||
case I2OPASSTHRU32:
|
||||
mutex_lock(&i2o_cfg_mutex);
|
||||
ret = i2o_cfg_passthru32(file, cmd, arg);
|
||||
mutex_unlock(&i2o_cfg_mutex);
|
||||
break;
|
||||
default:
|
||||
ret = -ENOIOCTLCMD;
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&i2o_cfg_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,8 +139,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
|
|||
|
||||
ubuf += sizeof(hdr);
|
||||
ubufcch = ubuf;
|
||||
if (gru_user_copy_handle(&ubuf, cch))
|
||||
goto fail;
|
||||
if (gru_user_copy_handle(&ubuf, cch)) {
|
||||
if (cch_locked)
|
||||
unlock_cch_handle(cch);
|
||||
return -EFAULT;
|
||||
}
|
||||
if (cch_locked)
|
||||
ubufcch->delresp = 0;
|
||||
bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;
|
||||
|
@ -179,10 +182,6 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
|
|||
ret = -EFAULT;
|
||||
|
||||
return ret ? ret : bytes;
|
||||
|
||||
fail:
|
||||
unlock_cch_handle(cch);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
int gru_dump_chiplet_request(unsigned long arg)
|
||||
|
|
|
@ -34,7 +34,7 @@ static void *alloc_fdmem(size_t size)
|
|||
* vmalloc() if the allocation size will be considered "large" by the VM.
|
||||
*/
|
||||
if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) {
|
||||
void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN);
|
||||
void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY);
|
||||
if (data != NULL)
|
||||
return data;
|
||||
}
|
||||
|
|
|
@ -1846,6 +1846,11 @@ int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
|
|||
GFP_KERNEL)) {
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
/*
|
||||
* add_to_page_cache_lru() grabs an extra page refcount.
|
||||
* Drop it here to avoid leaking this page later.
|
||||
*/
|
||||
page_cache_release(page);
|
||||
} else
|
||||
__free_page(page);
|
||||
|
||||
|
|
|
@ -7158,7 +7158,7 @@ int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh,
|
|||
if (end > i_size_read(inode))
|
||||
end = i_size_read(inode);
|
||||
|
||||
BUG_ON(start >= end);
|
||||
BUG_ON(start > end);
|
||||
|
||||
if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) ||
|
||||
!(le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL) ||
|
||||
|
|
|
@ -185,6 +185,9 @@ static int ocfs2_sync_file(struct file *file, loff_t start, loff_t end,
|
|||
file->f_path.dentry->d_name.name,
|
||||
(unsigned long long)datasync);
|
||||
|
||||
if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb))
|
||||
return -EROFS;
|
||||
|
||||
err = filemap_write_and_wait_range(inode->i_mapping, start, end);
|
||||
if (err)
|
||||
return err;
|
||||
|
@ -474,11 +477,6 @@ static int ocfs2_truncate_file(struct inode *inode,
|
|||
goto bail;
|
||||
}
|
||||
|
||||
/* lets handle the simple truncate cases before doing any more
|
||||
* cluster locking. */
|
||||
if (new_i_size == le64_to_cpu(fe->i_size))
|
||||
goto bail;
|
||||
|
||||
down_write(&OCFS2_I(inode)->ip_alloc_sem);
|
||||
|
||||
ocfs2_resv_discard(&osb->osb_la_resmap,
|
||||
|
@ -718,7 +716,8 @@ static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start,
|
|||
* While a write will already be ordering the data, a truncate will not.
|
||||
* Thus, we need to explicitly order the zeroed pages.
|
||||
*/
|
||||
static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode)
|
||||
static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode,
|
||||
struct buffer_head *di_bh)
|
||||
{
|
||||
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
||||
handle_t *handle = NULL;
|
||||
|
@ -735,7 +734,14 @@ static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode)
|
|||
}
|
||||
|
||||
ret = ocfs2_jbd2_file_inode(handle, inode);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
mlog_errno(ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh,
|
||||
OCFS2_JOURNAL_ACCESS_WRITE);
|
||||
if (ret)
|
||||
mlog_errno(ret);
|
||||
|
||||
out:
|
||||
|
@ -751,7 +757,7 @@ static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode)
|
|||
* to be too fragile to do exactly what we need without us having to
|
||||
* worry about recursive locking in ->write_begin() and ->write_end(). */
|
||||
static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
||||
u64 abs_to)
|
||||
u64 abs_to, struct buffer_head *di_bh)
|
||||
{
|
||||
struct address_space *mapping = inode->i_mapping;
|
||||
struct page *page;
|
||||
|
@ -759,6 +765,7 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
|||
handle_t *handle = NULL;
|
||||
int ret = 0;
|
||||
unsigned zero_from, zero_to, block_start, block_end;
|
||||
struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data;
|
||||
|
||||
BUG_ON(abs_from >= abs_to);
|
||||
BUG_ON(abs_to > (((u64)index + 1) << PAGE_CACHE_SHIFT));
|
||||
|
@ -801,7 +808,8 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
|||
}
|
||||
|
||||
if (!handle) {
|
||||
handle = ocfs2_zero_start_ordered_transaction(inode);
|
||||
handle = ocfs2_zero_start_ordered_transaction(inode,
|
||||
di_bh);
|
||||
if (IS_ERR(handle)) {
|
||||
ret = PTR_ERR(handle);
|
||||
handle = NULL;
|
||||
|
@ -818,8 +826,22 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
|||
ret = 0;
|
||||
}
|
||||
|
||||
if (handle)
|
||||
if (handle) {
|
||||
/*
|
||||
* fs-writeback will release the dirty pages without page lock
|
||||
* whose offset are over inode size, the release happens at
|
||||
* block_write_full_page_endio().
|
||||
*/
|
||||
i_size_write(inode, abs_to);
|
||||
inode->i_blocks = ocfs2_inode_sector_count(inode);
|
||||
di->i_size = cpu_to_le64((u64)i_size_read(inode));
|
||||
inode->i_mtime = inode->i_ctime = CURRENT_TIME;
|
||||
di->i_mtime = di->i_ctime = cpu_to_le64(inode->i_mtime.tv_sec);
|
||||
di->i_ctime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
|
||||
di->i_mtime_nsec = di->i_ctime_nsec;
|
||||
ocfs2_journal_dirty(handle, di_bh);
|
||||
ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
|
||||
}
|
||||
|
||||
out_unlock:
|
||||
unlock_page(page);
|
||||
|
@ -915,7 +937,7 @@ static int ocfs2_zero_extend_get_range(struct inode *inode,
|
|||
* has made sure that the entire range needs zeroing.
|
||||
*/
|
||||
static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
||||
u64 range_end)
|
||||
u64 range_end, struct buffer_head *di_bh)
|
||||
{
|
||||
int rc = 0;
|
||||
u64 next_pos;
|
||||
|
@ -931,7 +953,7 @@ static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
|||
next_pos = (zero_pos & PAGE_CACHE_MASK) + PAGE_CACHE_SIZE;
|
||||
if (next_pos > range_end)
|
||||
next_pos = range_end;
|
||||
rc = ocfs2_write_zero_page(inode, zero_pos, next_pos);
|
||||
rc = ocfs2_write_zero_page(inode, zero_pos, next_pos, di_bh);
|
||||
if (rc < 0) {
|
||||
mlog_errno(rc);
|
||||
break;
|
||||
|
@ -977,7 +999,7 @@ int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
|
|||
range_end = zero_to_size;
|
||||
|
||||
ret = ocfs2_zero_extend_range(inode, range_start,
|
||||
range_end);
|
||||
range_end, di_bh);
|
||||
if (ret) {
|
||||
mlog_errno(ret);
|
||||
break;
|
||||
|
@ -1145,14 +1167,14 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
|
|||
goto bail_unlock_rw;
|
||||
}
|
||||
|
||||
if (size_change && attr->ia_size != i_size_read(inode)) {
|
||||
if (size_change) {
|
||||
status = inode_newsize_ok(inode, attr->ia_size);
|
||||
if (status)
|
||||
goto bail_unlock;
|
||||
|
||||
inode_dio_wait(inode);
|
||||
|
||||
if (i_size_read(inode) > attr->ia_size) {
|
||||
if (i_size_read(inode) >= attr->ia_size) {
|
||||
if (ocfs2_should_order_data(inode)) {
|
||||
status = ocfs2_begin_ordered_truncate(inode,
|
||||
attr->ia_size);
|
||||
|
|
|
@ -664,6 +664,7 @@ static int ocfs2_link(struct dentry *old_dentry,
|
|||
struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
|
||||
struct ocfs2_dir_lookup_result lookup = { NULL, };
|
||||
sigset_t oldset;
|
||||
u64 old_de_ino;
|
||||
|
||||
trace_ocfs2_link((unsigned long long)OCFS2_I(inode)->ip_blkno,
|
||||
old_dentry->d_name.len, old_dentry->d_name.name,
|
||||
|
@ -686,6 +687,22 @@ static int ocfs2_link(struct dentry *old_dentry,
|
|||
goto out;
|
||||
}
|
||||
|
||||
err = ocfs2_lookup_ino_from_name(dir, old_dentry->d_name.name,
|
||||
old_dentry->d_name.len, &old_de_ino);
|
||||
if (err) {
|
||||
err = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether another node removed the source inode while we
|
||||
* were in the vfs.
|
||||
*/
|
||||
if (old_de_ino != OCFS2_I(inode)->ip_blkno) {
|
||||
err = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
|
||||
dentry->d_name.len);
|
||||
if (err)
|
||||
|
|
|
@ -468,17 +468,24 @@ static int __init update_note_header_size_elf64(const Elf64_Ehdr *ehdr_ptr)
|
|||
return rc;
|
||||
}
|
||||
nhdr_ptr = notes_section;
|
||||
while (real_sz < max_sz) {
|
||||
if (nhdr_ptr->n_namesz == 0)
|
||||
break;
|
||||
while (nhdr_ptr->n_namesz != 0) {
|
||||
sz = sizeof(Elf64_Nhdr) +
|
||||
((nhdr_ptr->n_namesz + 3) & ~3) +
|
||||
((nhdr_ptr->n_descsz + 3) & ~3);
|
||||
if ((real_sz + sz) > max_sz) {
|
||||
pr_warn("Warning: Exceeded p_memsz, dropping PT_NOTE entry n_namesz=0x%x, n_descsz=0x%x\n",
|
||||
nhdr_ptr->n_namesz, nhdr_ptr->n_descsz);
|
||||
break;
|
||||
}
|
||||
real_sz += sz;
|
||||
nhdr_ptr = (Elf64_Nhdr*)((char*)nhdr_ptr + sz);
|
||||
}
|
||||
kfree(notes_section);
|
||||
phdr_ptr->p_memsz = real_sz;
|
||||
if (real_sz == 0) {
|
||||
pr_warn("Warning: Zero PT_NOTE entries found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -648,17 +655,24 @@ static int __init update_note_header_size_elf32(const Elf32_Ehdr *ehdr_ptr)
|
|||
return rc;
|
||||
}
|
||||
nhdr_ptr = notes_section;
|
||||
while (real_sz < max_sz) {
|
||||
if (nhdr_ptr->n_namesz == 0)
|
||||
break;
|
||||
while (nhdr_ptr->n_namesz != 0) {
|
||||
sz = sizeof(Elf32_Nhdr) +
|
||||
((nhdr_ptr->n_namesz + 3) & ~3) +
|
||||
((nhdr_ptr->n_descsz + 3) & ~3);
|
||||
if ((real_sz + sz) > max_sz) {
|
||||
pr_warn("Warning: Exceeded p_memsz, dropping PT_NOTE entry n_namesz=0x%x, n_descsz=0x%x\n",
|
||||
nhdr_ptr->n_namesz, nhdr_ptr->n_descsz);
|
||||
break;
|
||||
}
|
||||
real_sz += sz;
|
||||
nhdr_ptr = (Elf32_Nhdr*)((char*)nhdr_ptr + sz);
|
||||
}
|
||||
kfree(notes_section);
|
||||
phdr_ptr->p_memsz = real_sz;
|
||||
if (real_sz == 0) {
|
||||
pr_warn("Warning: Zero PT_NOTE entries found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -188,6 +188,9 @@ static inline void kick_all_cpus_sync(void) { }
|
|||
*/
|
||||
extern void arch_disable_smp_support(void);
|
||||
|
||||
extern void arch_enable_nonboot_cpus_begin(void);
|
||||
extern void arch_enable_nonboot_cpus_end(void);
|
||||
|
||||
void smp_setup_processor_id(void);
|
||||
|
||||
#endif /* __LINUX_SMP_H */
|
||||
|
|
|
@ -945,8 +945,10 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
|
|||
* to it. Similarly, page lock is shifted.
|
||||
*/
|
||||
if (hpage != p) {
|
||||
put_page(hpage);
|
||||
get_page(p);
|
||||
if (!(flags & MF_COUNT_INCREASED)) {
|
||||
put_page(hpage);
|
||||
get_page(p);
|
||||
}
|
||||
lock_page(p);
|
||||
unlock_page(hpage);
|
||||
*hpagep = p;
|
||||
|
|
40
mm/slub.c
40
mm/slub.c
|
@ -1004,21 +1004,19 @@ static inline void slab_free_hook(struct kmem_cache *s, void *x)
|
|||
static void add_full(struct kmem_cache *s,
|
||||
struct kmem_cache_node *n, struct page *page)
|
||||
{
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
|
||||
if (!(s->flags & SLAB_STORE_USER))
|
||||
return;
|
||||
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
list_add(&page->lru, &n->full);
|
||||
}
|
||||
|
||||
static void remove_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page)
|
||||
{
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
|
||||
if (!(s->flags & SLAB_STORE_USER))
|
||||
return;
|
||||
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
list_del(&page->lru);
|
||||
}
|
||||
|
||||
|
@ -1520,11 +1518,9 @@ static void discard_slab(struct kmem_cache *s, struct page *page)
|
|||
/*
|
||||
* Management of partially allocated slabs.
|
||||
*/
|
||||
static inline void add_partial(struct kmem_cache_node *n,
|
||||
struct page *page, int tail)
|
||||
static inline void
|
||||
__add_partial(struct kmem_cache_node *n, struct page *page, int tail)
|
||||
{
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
|
||||
n->nr_partial++;
|
||||
if (tail == DEACTIVATE_TO_TAIL)
|
||||
list_add_tail(&page->lru, &n->partial);
|
||||
|
@ -1532,13 +1528,25 @@ static inline void add_partial(struct kmem_cache_node *n,
|
|||
list_add(&page->lru, &n->partial);
|
||||
}
|
||||
|
||||
static inline void add_partial(struct kmem_cache_node *n,
|
||||
struct page *page, int tail)
|
||||
{
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
__add_partial(n, page, tail);
|
||||
}
|
||||
|
||||
static inline void
|
||||
__remove_partial(struct kmem_cache_node *n, struct page *page)
|
||||
{
|
||||
list_del(&page->lru);
|
||||
n->nr_partial--;
|
||||
}
|
||||
|
||||
static inline void remove_partial(struct kmem_cache_node *n,
|
||||
struct page *page)
|
||||
{
|
||||
lockdep_assert_held(&n->list_lock);
|
||||
|
||||
list_del(&page->lru);
|
||||
n->nr_partial--;
|
||||
__remove_partial(n, page);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2906,12 +2914,10 @@ static void early_kmem_cache_node_alloc(int node)
|
|||
inc_slabs_node(kmem_cache_node, node, page->objects);
|
||||
|
||||
/*
|
||||
* the lock is for lockdep's sake, not for any actual
|
||||
* race protection
|
||||
* No locks need to be taken here as it has just been
|
||||
* initialized and there is no concurrent access.
|
||||
*/
|
||||
spin_lock(&n->list_lock);
|
||||
add_partial(n, page, DEACTIVATE_TO_HEAD);
|
||||
spin_unlock(&n->list_lock);
|
||||
__add_partial(n, page, DEACTIVATE_TO_HEAD);
|
||||
}
|
||||
|
||||
static void free_kmem_cache_nodes(struct kmem_cache *s)
|
||||
|
@ -3197,7 +3203,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
|||
|
||||
list_for_each_entry_safe(page, h, &n->partial, lru) {
|
||||
if (!page->inuse) {
|
||||
remove_partial(n, page);
|
||||
__remove_partial(n, page);
|
||||
discard_slab(s, page);
|
||||
} else {
|
||||
list_slab_objects(s, page,
|
||||
|
|
|
@ -471,7 +471,7 @@ sub seed_camelcase_includes {
|
|||
|
||||
$camelcase_seeded = 1;
|
||||
|
||||
if (-d ".git") {
|
||||
if (-e ".git") {
|
||||
my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`;
|
||||
chomp $git_last_include_commit;
|
||||
$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
|
||||
|
@ -499,7 +499,7 @@ sub seed_camelcase_includes {
|
|||
return;
|
||||
}
|
||||
|
||||
if (-d ".git") {
|
||||
if (-e ".git") {
|
||||
$files = `git ls-files "include/*.h"`;
|
||||
@include_files = split('\n', $files);
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ my %VCS_cmds;
|
|||
|
||||
my %VCS_cmds_git = (
|
||||
"execute_cmd" => \&git_execute_cmd,
|
||||
"available" => '(which("git") ne "") && (-d ".git")',
|
||||
"available" => '(which("git") ne "") && (-e ".git")',
|
||||
"find_signers_cmd" =>
|
||||
"git log --no-color --follow --since=\$email_git_since " .
|
||||
'--numstat --no-merges ' .
|
||||
|
|
Loading…
Reference in a new issue