diff --git a/[refs] b/[refs] index ee9980fe50b2..16a0ce12d080 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8f8f013478133eb98e35e1d669c98c5e39d769c7 +refs/heads/master: 8540d66615c39010168ab97eaafb476ec2851298 diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 18c3f0c41c95..9d1601ec1311 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -3287,11 +3287,11 @@ F: include/linux/ivtv* JFS FILESYSTEM P: Dave Kleikamp -M: shaggy@linux.vnet.ibm.com +M: shaggy@austin.ibm.com L: jfs-discussion@lists.sourceforge.net W: http://jfs.sourceforge.net/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git -S: Maintained +S: Supported F: Documentation/filesystems/jfs.txt F: fs/jfs/ diff --git a/trunk/Makefile b/trunk/Makefile index bbe8453baa74..0aeec59c1f0a 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -565,7 +565,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) # disable invalid "can't wrap" optimizations for signed / pointers -KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) +KBUILD_CFLAGS += $(call cc-option,-fwrapv) # revert to pre-gcc-4.4 behaviour of .eh_frame KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm) diff --git a/trunk/arch/alpha/kernel/ptrace.c b/trunk/arch/alpha/kernel/ptrace.c index e072041d19f8..1e9ad52c460e 100644 --- a/trunk/arch/alpha/kernel/ptrace.c +++ b/trunk/arch/alpha/kernel/ptrace.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/blackfin/kernel/ptrace.c b/trunk/arch/blackfin/kernel/ptrace.c index 6a387eec6b65..d76618db50df 100644 --- a/trunk/arch/blackfin/kernel/ptrace.c +++ b/trunk/arch/blackfin/kernel/ptrace.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/blackfin/kernel/sys_bfin.c b/trunk/arch/blackfin/kernel/sys_bfin.c index 3da60fb13ce4..a8f1329c15a4 100644 --- a/trunk/arch/blackfin/kernel/sys_bfin.c +++ b/trunk/arch/blackfin/kernel/sys_bfin.c @@ -29,6 +29,7 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include #include diff --git a/trunk/arch/cris/kernel/sys_cris.c b/trunk/arch/cris/kernel/sys_cris.c index 2ad962c7e88e..a79fbd87021b 100644 --- a/trunk/arch/cris/kernel/sys_cris.c +++ b/trunk/arch/cris/kernel/sys_cris.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/ptrace.c b/trunk/arch/ia64/kernel/ptrace.c index 9daa87fdb018..92c9689b7d97 100644 --- a/trunk/arch/ia64/kernel/ptrace.c +++ b/trunk/arch/ia64/kernel/ptrace.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/ptrace.c b/trunk/arch/m32r/kernel/ptrace.c index 98b8feb12ed8..bf0abe9e1f73 100644 --- a/trunk/arch/m32r/kernel/ptrace.c +++ b/trunk/arch/m32r/kernel/ptrace.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/microblaze/kernel/ptrace.c b/trunk/arch/microblaze/kernel/ptrace.c index 53ff39af6a5c..b86aa623e36d 100644 --- a/trunk/arch/microblaze/kernel/ptrace.c +++ b/trunk/arch/microblaze/kernel/ptrace.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/microblaze/kernel/signal.c b/trunk/arch/microblaze/kernel/signal.c index 1c80e4fc40ce..493819c25fba 100644 --- a/trunk/arch/microblaze/kernel/signal.c +++ b/trunk/arch/microblaze/kernel/signal.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/microblaze/kernel/sys_microblaze.c b/trunk/arch/microblaze/kernel/sys_microblaze.c index e000bce09b2b..8c9ebac5da10 100644 --- a/trunk/arch/microblaze/kernel/sys_microblaze.c +++ b/trunk/arch/microblaze/kernel/sys_microblaze.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/mips/kernel/ptrace32.c b/trunk/arch/mips/kernel/ptrace32.c index 32644b4a0714..c4f9ac17474a 100644 --- a/trunk/arch/mips/kernel/ptrace32.c +++ b/trunk/arch/mips/kernel/ptrace32.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/mips/mm/hugetlbpage.c b/trunk/arch/mips/mm/hugetlbpage.c index 8c2834f5919d..471c09aa1614 100644 --- a/trunk/arch/mips/mm/hugetlbpage.c +++ b/trunk/arch/mips/mm/hugetlbpage.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/mn10300/kernel/ptrace.c b/trunk/arch/mn10300/kernel/ptrace.c index cf847dabc1bd..e143339ad28e 100644 --- a/trunk/arch/mn10300/kernel/ptrace.c +++ b/trunk/arch/mn10300/kernel/ptrace.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/mn10300/kernel/signal.c b/trunk/arch/mn10300/kernel/signal.c index feb2f2e810db..9f7572a0f578 100644 --- a/trunk/arch/mn10300/kernel/signal.c +++ b/trunk/arch/mn10300/kernel/signal.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/mn10300/kernel/sys_mn10300.c b/trunk/arch/mn10300/kernel/sys_mn10300.c index 3e52a1054327..bca5a84dc72c 100644 --- a/trunk/arch/mn10300/kernel/sys_mn10300.c +++ b/trunk/arch/mn10300/kernel/sys_mn10300.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -20,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/mn10300/kernel/traps.c b/trunk/arch/mn10300/kernel/traps.c index 91365adba4f5..0dfdc5001124 100644 --- a/trunk/arch/mn10300/kernel/traps.c +++ b/trunk/arch/mn10300/kernel/traps.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/mn10300/mm/fault.c b/trunk/arch/mn10300/mm/fault.c index 53bb17d0f068..a62e1e138bc1 100644 --- a/trunk/arch/mn10300/mm/fault.c +++ b/trunk/arch/mn10300/mm/fault.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include /* For unblank_screen() */ diff --git a/trunk/arch/mn10300/mm/misalignment.c b/trunk/arch/mn10300/mm/misalignment.c index 30016251f658..94c4a4358065 100644 --- a/trunk/arch/mn10300/mm/misalignment.c +++ b/trunk/arch/mn10300/mm/misalignment.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/ptrace32.c b/trunk/arch/powerpc/kernel/ptrace32.c index 8a6daf4129f6..297632cba047 100644 --- a/trunk/arch/powerpc/kernel/ptrace32.c +++ b/trunk/arch/powerpc/kernel/ptrace32.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/s390/kernel/dis.c b/trunk/arch/s390/kernel/dis.c index db943a7ec513..d2f270c995d9 100644 --- a/trunk/arch/s390/kernel/dis.c +++ b/trunk/arch/s390/kernel/dis.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/s390/kernel/ptrace.c b/trunk/arch/s390/kernel/ptrace.c index 43acd73105b7..490b39934d65 100644 --- a/trunk/arch/s390/kernel/ptrace.c +++ b/trunk/arch/s390/kernel/ptrace.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/s390/mm/fault.c b/trunk/arch/s390/mm/fault.c index e5e119fe03b2..74eb26bf1970 100644 --- a/trunk/arch/s390/mm/fault.c +++ b/trunk/arch/s390/mm/fault.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sh/mm/tlb-sh3.c b/trunk/arch/sh/mm/tlb-sh3.c index 17cb7c3adf22..7fbfd5a11ffa 100644 --- a/trunk/arch/sh/mm/tlb-sh3.c +++ b/trunk/arch/sh/mm/tlb-sh3.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/sparc/kernel/ptrace_32.c b/trunk/arch/sparc/kernel/ptrace_32.c index 7e3dfd9bb97e..8ce6285a06d5 100644 --- a/trunk/arch/sparc/kernel/ptrace_32.c +++ b/trunk/arch/sparc/kernel/ptrace_32.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/ptrace_64.c b/trunk/arch/sparc/kernel/ptrace_64.c index 4ae91dc2feb9..a941c610e7ce 100644 --- a/trunk/arch/sparc/kernel/ptrace_64.c +++ b/trunk/arch/sparc/kernel/ptrace_64.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/time_64.c b/trunk/arch/sparc/kernel/time_64.c index da1218e8ee87..5c12e79b4bdf 100644 --- a/trunk/arch/sparc/kernel/time_64.c +++ b/trunk/arch/sparc/kernel/time_64.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/traps_32.c b/trunk/arch/sparc/kernel/traps_32.c index c0490c7bbde0..358283341b47 100644 --- a/trunk/arch/sparc/kernel/traps_32.c +++ b/trunk/arch/sparc/kernel/traps_32.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/block/DAC960.c b/trunk/drivers/block/DAC960.c index 1e6b7c14f697..668dc234b8e2 100644 --- a/trunk/drivers/block/DAC960.c +++ b/trunk/drivers/block/DAC960.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/block/cciss.c b/trunk/drivers/block/cciss.c index a52cc7fe45ea..65a0655e7fc8 100644 --- a/trunk/drivers/block/cciss.c +++ b/trunk/drivers/block/cciss.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/block/loop.c b/trunk/drivers/block/loop.c index 5757188cd1fb..801f4ab83302 100644 --- a/trunk/drivers/block/loop.c +++ b/trunk/drivers/block/loop.c @@ -61,6 +61,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/bluetooth/hci_vhci.c b/trunk/drivers/bluetooth/hci_vhci.c index d5cde6d86f89..1df9dda2e377 100644 --- a/trunk/drivers/bluetooth/hci_vhci.c +++ b/trunk/drivers/bluetooth/hci_vhci.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/char/amiserial.c b/trunk/drivers/char/amiserial.c index 6c32fbf07164..72429b6b2fa8 100644 --- a/trunk/drivers/char/amiserial.c +++ b/trunk/drivers/char/amiserial.c @@ -81,7 +81,6 @@ static char *serial_version = "4.30"; #include #include #include -#include #include #include diff --git a/trunk/drivers/char/cyclades.c b/trunk/drivers/char/cyclades.c index 2dafc2da0648..f3366d3f06cf 100644 --- a/trunk/drivers/char/cyclades.c +++ b/trunk/drivers/char/cyclades.c @@ -633,7 +633,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/epca.c b/trunk/drivers/char/epca.c index ff647ca1c489..abef1f7d84fe 100644 --- a/trunk/drivers/char/epca.c +++ b/trunk/drivers/char/epca.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/isicom.c b/trunk/drivers/char/isicom.c index 4f1f4cd670da..621d1184673c 100644 --- a/trunk/drivers/char/isicom.c +++ b/trunk/drivers/char/isicom.c @@ -122,7 +122,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/istallion.c b/trunk/drivers/char/istallion.c index ab2f3349c5c4..0c999f5bb3db 100644 --- a/trunk/drivers/char/istallion.c +++ b/trunk/drivers/char/istallion.c @@ -20,7 +20,6 @@ #include #include -#include #include #include #include diff --git a/trunk/drivers/char/moxa.c b/trunk/drivers/char/moxa.c index dd0083bbb64a..65b6ff2442c6 100644 --- a/trunk/drivers/char/moxa.c +++ b/trunk/drivers/char/moxa.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/mxser.c b/trunk/drivers/char/mxser.c index dbf8d52f31d0..52d953eb30c3 100644 --- a/trunk/drivers/char/mxser.c +++ b/trunk/drivers/char/mxser.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/n_hdlc.c b/trunk/drivers/char/n_hdlc.c index c68118efad84..1c43c8cdee25 100644 --- a/trunk/drivers/char/n_hdlc.c +++ b/trunk/drivers/char/n_hdlc.c @@ -97,7 +97,6 @@ #include #include #include -#include #include /* used in new tty drivers */ #include /* used in new tty drivers */ #include diff --git a/trunk/drivers/char/n_r3964.c b/trunk/drivers/char/n_r3964.c index 6934025a1ac1..2e99158ebb8a 100644 --- a/trunk/drivers/char/n_r3964.c +++ b/trunk/drivers/char/n_r3964.c @@ -58,7 +58,6 @@ #include #include #include -#include #include #include #include /* used in new tty drivers */ diff --git a/trunk/drivers/char/pty.c b/trunk/drivers/char/pty.c index 6e6942c45f5b..9d1b4f548f67 100644 --- a/trunk/drivers/char/pty.c +++ b/trunk/drivers/char/pty.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/rio/rio_linux.c b/trunk/drivers/char/rio/rio_linux.c index d58c2eb07f07..ce81da5b2da9 100644 --- a/trunk/drivers/char/rio/rio_linux.c +++ b/trunk/drivers/char/rio/rio_linux.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/char/riscom8.c b/trunk/drivers/char/riscom8.c index 171711acf5cd..217660451237 100644 --- a/trunk/drivers/char/riscom8.c +++ b/trunk/drivers/char/riscom8.c @@ -47,7 +47,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/char/rocket.c b/trunk/drivers/char/rocket.c index 0e29a23ec4c5..63d5b628477a 100644 --- a/trunk/drivers/char/rocket.c +++ b/trunk/drivers/char/rocket.c @@ -73,7 +73,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/serial167.c b/trunk/drivers/char/serial167.c index 51e7a46787be..f1f24f0ee26f 100644 --- a/trunk/drivers/char/serial167.c +++ b/trunk/drivers/char/serial167.c @@ -52,7 +52,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/specialix.c b/trunk/drivers/char/specialix.c index bfe4cdb2febb..e72be4190a44 100644 --- a/trunk/drivers/char/specialix.c +++ b/trunk/drivers/char/specialix.c @@ -87,7 +87,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/sx.c b/trunk/drivers/char/sx.c index a81ec4fcf6ff..518f2a25d91e 100644 --- a/trunk/drivers/char/sx.c +++ b/trunk/drivers/char/sx.c @@ -216,7 +216,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/synclink.c b/trunk/drivers/char/synclink.c index 813552f14884..afded3a2379c 100644 --- a/trunk/drivers/char/synclink.c +++ b/trunk/drivers/char/synclink.c @@ -81,7 +81,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/synclink_gt.c b/trunk/drivers/char/synclink_gt.c index 91f20a92fddf..a2e67e6df3a1 100644 --- a/trunk/drivers/char/synclink_gt.c +++ b/trunk/drivers/char/synclink_gt.c @@ -62,7 +62,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/synclinkmp.c b/trunk/drivers/char/synclinkmp.c index 8d4a2a8a0a70..6f727e3c53ad 100644 --- a/trunk/drivers/char/synclinkmp.c +++ b/trunk/drivers/char/synclinkmp.c @@ -52,7 +52,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/tpm/tpm.c b/trunk/drivers/char/tpm/tpm.c index b0603b2e5684..ccdd828adcef 100644 --- a/trunk/drivers/char/tpm/tpm.c +++ b/trunk/drivers/char/tpm/tpm.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "tpm.h" diff --git a/trunk/drivers/char/tty_ioctl.c b/trunk/drivers/char/tty_ioctl.c index ad6ba4ed2808..b24f6c6a1ea3 100644 --- a/trunk/drivers/char/tty_ioctl.c +++ b/trunk/drivers/char/tty_ioctl.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/char/tty_ldisc.c b/trunk/drivers/char/tty_ldisc.c index 0ef0dc97ba20..913aa8d3f1c5 100644 --- a/trunk/drivers/char/tty_ldisc.c +++ b/trunk/drivers/char/tty_ldisc.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/char/vt.c b/trunk/drivers/char/vt.c index 7947bd1b4cf7..d9113b4c76e3 100644 --- a/trunk/drivers/char/vt.c +++ b/trunk/drivers/char/vt.c @@ -89,7 +89,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/char/vt_ioctl.c b/trunk/drivers/char/vt_ioctl.c index 95189f288f8c..7539bed0f7e0 100644 --- a/trunk/drivers/char/vt_ioctl.c +++ b/trunk/drivers/char/vt_ioctl.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/gpio/vr41xx_giu.c b/trunk/drivers/gpio/vr41xx_giu.c index b16c9a8c03f5..b70e06133e78 100644 --- a/trunk/drivers/gpio/vr41xx_giu.c +++ b/trunk/drivers/gpio/vr41xx_giu.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/hid/usbhid/hid-core.c b/trunk/drivers/hid/usbhid/hid-core.c index 3c1fcb7640ab..76c4bbe9dccb 100644 --- a/trunk/drivers/hid/usbhid/hid-core.c +++ b/trunk/drivers/hid/usbhid/hid-core.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/hwmon/abituguru3.c b/trunk/drivers/hwmon/abituguru3.c index 7d3f15d32fdf..ad2b3431b725 100644 --- a/trunk/drivers/hwmon/abituguru3.c +++ b/trunk/drivers/hwmon/abituguru3.c @@ -357,7 +357,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "AUX5 Fan", 39, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x0014, "AB9", /* + AB9 Pro */ { + { 0x0014, NULL /* Abit AB9 Pro, need DMI string */, { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR", 1, 0, 10, 1, 0 }, { "DDR VTT", 2, 0, 10, 1, 0 }, @@ -455,7 +455,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "AUX3 FAN", 37, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x0018, "AB9 QuadGT", { + { 0x0018, NULL /* Unknown, need DMI string */, { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR2", 1, 0, 20, 1, 0 }, { "DDR2 VTT", 2, 0, 10, 1, 0 }, @@ -564,7 +564,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "AUX3 Fan", 36, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x001C, "IX38 QuadGT", { + { 0x001C, NULL /* Unknown, need DMI string */, { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR2", 1, 0, 20, 1, 0 }, { "DDR2 VTT", 2, 0, 10, 1, 0 }, diff --git a/trunk/drivers/hwmon/max6650.c b/trunk/drivers/hwmon/max6650.c index 58f66be61b1f..86142a858238 100644 --- a/trunk/drivers/hwmon/max6650.c +++ b/trunk/drivers/hwmon/max6650.c @@ -418,7 +418,6 @@ static ssize_t set_div(struct device *dev, struct device_attribute *devattr, data->count = 3; break; default: - mutex_unlock(&data->update_lock); dev_err(&client->dev, "illegal value for fan divider (%d)\n", div); return -EINVAL; diff --git a/trunk/drivers/hwmon/sht15.c b/trunk/drivers/hwmon/sht15.c index 6290a259456e..56cd6004da36 100644 --- a/trunk/drivers/hwmon/sht15.c +++ b/trunk/drivers/hwmon/sht15.c @@ -257,7 +257,7 @@ static inline int sht15_update_single_val(struct sht15_data *data, (data->flag == SHT15_READING_NOTHING), msecs_to_jiffies(timeout_msecs)); if (ret == 0) {/* timeout occurred */ - disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data)); + disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));; sht15_connection_reset(data); return -ETIME; } diff --git a/trunk/drivers/isdn/hisax/hfc_usb.c b/trunk/drivers/isdn/hisax/hfc_usb.c index 9de54202c90c..8df889b0c1a9 100644 --- a/trunk/drivers/isdn/hisax/hfc_usb.c +++ b/trunk/drivers/isdn/hisax/hfc_usb.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include "hisax.h" diff --git a/trunk/drivers/isdn/i4l/isdn_tty.c b/trunk/drivers/isdn/i4l/isdn_tty.c index 2881a66c1aa9..b4d4522e5071 100644 --- a/trunk/drivers/isdn/i4l/isdn_tty.c +++ b/trunk/drivers/isdn/i4l/isdn_tty.c @@ -13,7 +13,6 @@ #include #include -#include #include "isdn_common.h" #include "isdn_tty.h" #ifdef CONFIG_ISDN_AUDIO diff --git a/trunk/drivers/isdn/mISDN/stack.c b/trunk/drivers/isdn/mISDN/stack.c index 3e1532a180ff..e2f45019ebf0 100644 --- a/trunk/drivers/isdn/mISDN/stack.c +++ b/trunk/drivers/isdn/mISDN/stack.c @@ -17,7 +17,6 @@ #include #include -#include #include "core.h" static u_int *debug; diff --git a/trunk/drivers/media/dvb/bt8xx/dst_ca.c b/trunk/drivers/media/dvb/bt8xx/dst_ca.c index 0e246eaad05a..4601b059b2b2 100644 --- a/trunk/drivers/media/dvb/bt8xx/dst_ca.c +++ b/trunk/drivers/media/dvb/bt8xx/dst_ca.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include "dvbdev.h" diff --git a/trunk/drivers/media/dvb/dvb-core/dvbdev.h b/trunk/drivers/media/dvb/dvb-core/dvbdev.h index 487919bea7ae..79927305e84d 100644 --- a/trunk/drivers/media/dvb/dvb-core/dvbdev.h +++ b/trunk/drivers/media/dvb/dvb-core/dvbdev.h @@ -27,6 +27,7 @@ #include #include #include +#include #define DVB_MAJOR 212 diff --git a/trunk/drivers/media/dvb/ttpci/av7110.c b/trunk/drivers/media/dvb/ttpci/av7110.c index 8d65c652ba50..d1d959ed37b7 100644 --- a/trunk/drivers/media/dvb/ttpci/av7110.c +++ b/trunk/drivers/media/dvb/ttpci/av7110.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/media/radio/radio-mr800.c b/trunk/drivers/media/radio/radio-mr800.c index 575bf9d89419..837467f93805 100644 --- a/trunk/drivers/media/radio/radio-mr800.c +++ b/trunk/drivers/media/radio/radio-mr800.c @@ -58,7 +58,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/radio/radio-si470x.c b/trunk/drivers/media/radio/radio-si470x.c index e85f318b4d2b..46d216329611 100644 --- a/trunk/drivers/media/radio/radio-si470x.c +++ b/trunk/drivers/media/radio/radio-si470x.c @@ -127,7 +127,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/bt8xx/bttv-driver.c b/trunk/drivers/media/video/bt8xx/bttv-driver.c index d147d29bb0d3..5eb1464af670 100644 --- a/trunk/drivers/media/video/bt8xx/bttv-driver.c +++ b/trunk/drivers/media/video/bt8xx/bttv-driver.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include "bttvp.h" diff --git a/trunk/drivers/media/video/cx23885/cx23885-417.c b/trunk/drivers/media/video/cx23885/cx23885-417.c index 428f0c45e6b7..2943bfd32a94 100644 --- a/trunk/drivers/media/video/cx23885/cx23885-417.c +++ b/trunk/drivers/media/video/cx23885/cx23885-417.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/cx23885/cx23885-video.c b/trunk/drivers/media/video/cx23885/cx23885-video.c index 5d6093336300..70836af3ab48 100644 --- a/trunk/drivers/media/video/cx23885/cx23885-video.c +++ b/trunk/drivers/media/video/cx23885/cx23885-video.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/cx88/cx88-blackbird.c b/trunk/drivers/media/video/cx88/cx88-blackbird.c index 356d6896da3f..44eacfb0d0d6 100644 --- a/trunk/drivers/media/video/cx88/cx88-blackbird.c +++ b/trunk/drivers/media/video/cx88/cx88-blackbird.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/cx88/cx88-video.c b/trunk/drivers/media/video/cx88/cx88-video.c index 2bb54c3ef5cd..b12770848c00 100644 --- a/trunk/drivers/media/video/cx88/cx88-video.c +++ b/trunk/drivers/media/video/cx88/cx88-video.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/dabusb.c b/trunk/drivers/media/video/dabusb.c index 0664d111085f..ec2f45dde164 100644 --- a/trunk/drivers/media/video/dabusb.c +++ b/trunk/drivers/media/video/dabusb.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/pwc/pwc-if.c b/trunk/drivers/media/video/pwc/pwc-if.c index 8d17cf613306..db25c3034c11 100644 --- a/trunk/drivers/media/video/pwc/pwc-if.c +++ b/trunk/drivers/media/video/pwc/pwc-if.c @@ -62,7 +62,6 @@ #include #include #include -#include #ifdef CONFIG_USB_PWC_INPUT_EVDEV #include #endif diff --git a/trunk/drivers/media/video/pwc/pwc.h b/trunk/drivers/media/video/pwc/pwc.h index 0b658dee05a4..0be6f814f539 100644 --- a/trunk/drivers/media/video/pwc/pwc.h +++ b/trunk/drivers/media/video/pwc/pwc.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/media/video/s2255drv.c b/trunk/drivers/media/video/s2255drv.c index 9e3262c0ba37..6be845ccc7d7 100644 --- a/trunk/drivers/media/video/s2255drv.c +++ b/trunk/drivers/media/video/s2255drv.c @@ -48,7 +48,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/saa5246a.c b/trunk/drivers/media/video/saa5246a.c index b624a4c01fdc..155804b061e9 100644 --- a/trunk/drivers/media/video/saa5246a.c +++ b/trunk/drivers/media/video/saa5246a.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/media/video/saa5249.c b/trunk/drivers/media/video/saa5249.c index 12835fb82c95..271d6e931b75 100644 --- a/trunk/drivers/media/video/saa5249.c +++ b/trunk/drivers/media/video/saa5249.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/media/video/saa7134/saa7134-empress.c b/trunk/drivers/media/video/saa7134/saa7134-empress.c index 296788c3bf0e..add1757f8930 100644 --- a/trunk/drivers/media/video/saa7134/saa7134-empress.c +++ b/trunk/drivers/media/video/saa7134/saa7134-empress.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include "saa7134-reg.h" diff --git a/trunk/drivers/media/video/se401.c b/trunk/drivers/media/video/se401.c index 85ffc2cba039..c8f05297d0f0 100644 --- a/trunk/drivers/media/video/se401.c +++ b/trunk/drivers/media/video/se401.c @@ -31,7 +31,6 @@ static const char version[] = "0.24"; #include #include #include -#include #include #include #include "se401.h" diff --git a/trunk/drivers/media/video/stk-webcam.c b/trunk/drivers/media/video/stk-webcam.c index 4d6785e63455..2e5937047278 100644 --- a/trunk/drivers/media/video/stk-webcam.c +++ b/trunk/drivers/media/video/stk-webcam.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/media/video/stradis.c b/trunk/drivers/media/video/stradis.c index eaada39c76fd..0eb313082c97 100644 --- a/trunk/drivers/media/video/stradis.c +++ b/trunk/drivers/media/video/stradis.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/stv680.c b/trunk/drivers/media/video/stv680.c index 8b4e7dafce7b..75f286f7a2e9 100644 --- a/trunk/drivers/media/video/stv680.c +++ b/trunk/drivers/media/video/stv680.c @@ -62,7 +62,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/usbvideo/vicam.c b/trunk/drivers/media/video/usbvideo/vicam.c index 45fce39ec9ad..8d73979596f9 100644 --- a/trunk/drivers/media/video/usbvideo/vicam.c +++ b/trunk/drivers/media/video/usbvideo/vicam.c @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/usbvision/usbvision-video.c b/trunk/drivers/media/video/usbvision/usbvision-video.c index 90d9b5c0e9a7..90b58914f984 100644 --- a/trunk/drivers/media/video/usbvision/usbvision-video.c +++ b/trunk/drivers/media/video/usbvision/usbvision-video.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/media/video/v4l2-dev.c b/trunk/drivers/media/video/v4l2-dev.c index a7f1b69a7dab..31eac66411d7 100644 --- a/trunk/drivers/media/video/v4l2-dev.c +++ b/trunk/drivers/media/video/v4l2-dev.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/media/video/zoran/zoran_driver.c b/trunk/drivers/media/video/zoran/zoran_driver.c index bcdefb1bcb3d..3d7df32a3d87 100644 --- a/trunk/drivers/media/video/zoran/zoran_driver.c +++ b/trunk/drivers/media/video/zoran/zoran_driver.c @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/misc/sgi-gru/grufile.c b/trunk/drivers/misc/sgi-gru/grufile.c index aed609832bc2..fa2d93a9fb8d 100644 --- a/trunk/drivers/misc/sgi-gru/grufile.c +++ b/trunk/drivers/misc/sgi-gru/grufile.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/misc/sgi-gru/grukservices.c b/trunk/drivers/misc/sgi-gru/grukservices.c index 79689b10f937..eedbf9c32760 100644 --- a/trunk/drivers/misc/sgi-gru/grukservices.c +++ b/trunk/drivers/misc/sgi-gru/grukservices.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/net/irda/irtty-sir.c b/trunk/drivers/net/irda/irtty-sir.c index 20f9bc626688..d53aa9582137 100644 --- a/trunk/drivers/net/irda/irtty-sir.c +++ b/trunk/drivers/net/irda/irtty-sir.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/pci/hotplug/cpci_hotplug_core.c b/trunk/drivers/pci/hotplug/cpci_hotplug_core.c index d703e73fffa7..a5b9f6ae507b 100644 --- a/trunk/drivers/pci/hotplug/cpci_hotplug_core.c +++ b/trunk/drivers/pci/hotplug/cpci_hotplug_core.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_ctrl.c b/trunk/drivers/pci/hotplug/cpqphp_ctrl.c index 0ff689afa757..2fa47af992a8 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_ctrl.c +++ b/trunk/drivers/pci/hotplug/cpqphp_ctrl.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_sysfs.c b/trunk/drivers/pci/hotplug/cpqphp_sysfs.c index e6089bdb6e5b..8450f4a6568a 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_sysfs.c +++ b/trunk/drivers/pci/hotplug/cpqphp_sysfs.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include "cpqphp.h" diff --git a/trunk/drivers/pci/hotplug/pciehp_ctrl.c b/trunk/drivers/pci/hotplug/pciehp_ctrl.c index 8aab8edf123e..ff4034502d24 100644 --- a/trunk/drivers/pci/hotplug/pciehp_ctrl.c +++ b/trunk/drivers/pci/hotplug/pciehp_ctrl.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include "../pci.h" diff --git a/trunk/drivers/pci/syscall.c b/trunk/drivers/pci/syscall.c index e1c1ec540893..ec22284eed30 100644 --- a/trunk/drivers/pci/syscall.c +++ b/trunk/drivers/pci/syscall.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include "pci.h" diff --git a/trunk/drivers/s390/block/dasd_ioctl.c b/trunk/drivers/s390/block/dasd_ioctl.c index df918ef27965..4ce3f72ee1c1 100644 --- a/trunk/drivers/s390/block/dasd_ioctl.c +++ b/trunk/drivers/s390/block/dasd_ioctl.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/scsi/qla2xxx/qla_mid.c b/trunk/drivers/scsi/qla2xxx/qla_mid.c index cd78c501803a..650bcef08f2a 100644 --- a/trunk/drivers/scsi/qla2xxx/qla_mid.c +++ b/trunk/drivers/scsi/qla2xxx/qla_mid.c @@ -9,6 +9,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/staging/go7007/s2250-loader.c b/trunk/drivers/staging/go7007/s2250-loader.c index bb22347af60e..a5e4acab089e 100644 --- a/trunk/drivers/staging/go7007/s2250-loader.c +++ b/trunk/drivers/staging/go7007/s2250-loader.c @@ -17,7 +17,6 @@ #include #include -#include #include #include diff --git a/trunk/drivers/staging/usbip/usbip_common.c b/trunk/drivers/staging/usbip/usbip_common.c index 251220dc8851..22f93dd0ba03 100644 --- a/trunk/drivers/staging/usbip/usbip_common.c +++ b/trunk/drivers/staging/usbip/usbip_common.c @@ -18,7 +18,6 @@ */ #include -#include #include #include #include diff --git a/trunk/drivers/telephony/ixj.c b/trunk/drivers/telephony/ixj.c index 40de151f2789..a913efc69669 100644 --- a/trunk/drivers/telephony/ixj.c +++ b/trunk/drivers/telephony/ixj.c @@ -257,7 +257,6 @@ #include /* everything... */ #include /* error codes */ #include -#include #include #include #include diff --git a/trunk/drivers/telephony/phonedev.c b/trunk/drivers/telephony/phonedev.c index f3873f650bb4..b52cc830c0b4 100644 --- a/trunk/drivers/telephony/phonedev.c +++ b/trunk/drivers/telephony/phonedev.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/usb/class/cdc-wdm.c b/trunk/drivers/usb/class/cdc-wdm.c index ba589d4ca8bc..0fe434505ac4 100644 --- a/trunk/drivers/usb/class/cdc-wdm.c +++ b/trunk/drivers/usb/class/cdc-wdm.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/amd5536udc.c b/trunk/drivers/usb/gadget/amd5536udc.c index 77352ccc245e..826f3adde5d8 100644 --- a/trunk/drivers/usb/gadget/amd5536udc.c +++ b/trunk/drivers/usb/gadget/amd5536udc.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/langwell_udc.c b/trunk/drivers/usb/gadget/langwell_udc.c index a3913519fd58..6829d5961359 100644 --- a/trunk/drivers/usb/gadget/langwell_udc.c +++ b/trunk/drivers/usb/gadget/langwell_udc.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/s3c2410_udc.c b/trunk/drivers/usb/gadget/s3c2410_udc.c index a9b452fe6221..9a2b8920532d 100644 --- a/trunk/drivers/usb/gadget/s3c2410_udc.c +++ b/trunk/drivers/usb/gadget/s3c2410_udc.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/host/r8a66597-hcd.c b/trunk/drivers/usb/host/r8a66597-hcd.c index e18f74946e68..56976cc0352a 100644 --- a/trunk/drivers/usb/host/r8a66597-hcd.c +++ b/trunk/drivers/usb/host/r8a66597-hcd.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/misc/iowarrior.c b/trunk/drivers/usb/misc/iowarrior.c index 90e1a8dedfa9..3c5fe5cee05a 100644 --- a/trunk/drivers/usb/misc/iowarrior.c +++ b/trunk/drivers/usb/misc/iowarrior.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include diff --git a/trunk/drivers/usb/misc/rio500.c b/trunk/drivers/usb/misc/rio500.c index d645f3899fe1..deb95bb49fd1 100644 --- a/trunk/drivers/usb/misc/rio500.c +++ b/trunk/drivers/usb/misc/rio500.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/usb/misc/usblcd.c b/trunk/drivers/usb/misc/usblcd.c index 29092b8e59ce..e0ff9ccd866b 100644 --- a/trunk/drivers/usb/misc/usblcd.c +++ b/trunk/drivers/usb/misc/usblcd.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/usb/musb/cppi_dma.h b/trunk/drivers/usb/musb/cppi_dma.h index 59bf949e589b..8a39de3e6e47 100644 --- a/trunk/drivers/usb/musb/cppi_dma.h +++ b/trunk/drivers/usb/musb/cppi_dma.h @@ -5,6 +5,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/usb/musb/musb_core.h b/trunk/drivers/usb/musb/musb_core.h index 381d648a36b8..f3772ca3b2cf 100644 --- a/trunk/drivers/usb/musb/musb_core.h +++ b/trunk/drivers/usb/musb/musb_core.h @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ftdi_sio.c b/trunk/drivers/usb/serial/ftdi_sio.c index 5a8ae274d258..5f08702f672f 100644 --- a/trunk/drivers/usb/serial/ftdi_sio.c +++ b/trunk/drivers/usb/serial/ftdi_sio.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/usb/serial/mos7840.c b/trunk/drivers/usb/serial/mos7840.c index c31940a307f8..c40f95c1951c 100644 --- a/trunk/drivers/usb/serial/mos7840.c +++ b/trunk/drivers/usb/serial/mos7840.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/usb/serial/pl2303.c b/trunk/drivers/usb/serial/pl2303.c index efaf59c4f5d0..7d15bfa7c2db 100644 --- a/trunk/drivers/usb/serial/pl2303.c +++ b/trunk/drivers/usb/serial/pl2303.c @@ -94,6 +94,7 @@ static struct usb_device_id id_table [] = { { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) }, { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) }, + { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) }, { } /* Terminating entry */ }; diff --git a/trunk/drivers/usb/serial/pl2303.h b/trunk/drivers/usb/serial/pl2303.h index 1d7a22e3a9fd..12aac7d2462d 100644 --- a/trunk/drivers/usb/serial/pl2303.h +++ b/trunk/drivers/usb/serial/pl2303.h @@ -122,3 +122,7 @@ /* Hewlett-Packard LD220-HP POS Pole Display */ #define HP_VENDOR_ID 0x03f0 #define HP_LD220_PRODUCT_ID 0x3524 + +/* Cressi Edy (diving computer) PC interface */ +#define CRESSI_VENDOR_ID 0x04b8 +#define CRESSI_EDY_PRODUCT_ID 0x0521 diff --git a/trunk/drivers/usb/serial/usb-serial.c b/trunk/drivers/usb/serial/usb-serial.c index 0c39b55aeef4..a84216464ca0 100644 --- a/trunk/drivers/usb/serial/usb-serial.c +++ b/trunk/drivers/usb/serial/usb-serial.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/drivers/video/fbmem.c b/trunk/drivers/video/fbmem.c index a85c818be945..53ea05645ff8 100644 --- a/trunk/drivers/video/fbmem.c +++ b/trunk/drivers/video/fbmem.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/adfs/super.c b/trunk/fs/adfs/super.c index 6910a98bd73c..aad92f0a1048 100644 --- a/trunk/fs/adfs/super.c +++ b/trunk/fs/adfs/super.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include "adfs.h" #include "dir_f.h" diff --git a/trunk/fs/afs/dir.c b/trunk/fs/afs/dir.c index 88067f36e5e7..9bd757774c9e 100644 --- a/trunk/fs/afs/dir.c +++ b/trunk/fs/afs/dir.c @@ -564,7 +564,7 @@ static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, static int afs_d_revalidate(struct dentry *dentry, struct nameidata *nd) { struct afs_vnode *vnode, *dir; - struct afs_fid uninitialized_var(fid); + struct afs_fid fid; struct dentry *parent; struct key *key; void *dir_version; diff --git a/trunk/fs/afs/super.c b/trunk/fs/afs/super.c index e1ea1c240b6a..ad0514d0115f 100644 --- a/trunk/fs/afs/super.c +++ b/trunk/fs/afs/super.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/autofs4/dev-ioctl.c b/trunk/fs/autofs4/dev-ioctl.c index 00bf8fcb245f..f3da2eb51f56 100644 --- a/trunk/fs/autofs4/dev-ioctl.c +++ b/trunk/fs/autofs4/dev-ioctl.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/bfs/dir.c b/trunk/fs/bfs/dir.c index 1e41aadb1068..54bd07d44e68 100644 --- a/trunk/fs/bfs/dir.c +++ b/trunk/fs/bfs/dir.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include "bfs.h" diff --git a/trunk/fs/bfs/file.c b/trunk/fs/bfs/file.c index 88b9a3ff44e4..6a021265f018 100644 --- a/trunk/fs/bfs/file.c +++ b/trunk/fs/bfs/file.c @@ -11,6 +11,7 @@ #include #include +#include #include "bfs.h" #undef DEBUG diff --git a/trunk/fs/btrfs/compression.c b/trunk/fs/btrfs/compression.c index 9d8ba4d54a37..de1e2fd32080 100644 --- a/trunk/fs/btrfs/compression.c +++ b/trunk/fs/btrfs/compression.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/btrfs/file.c b/trunk/fs/btrfs/file.c index 4b833972273a..7c3cd248d8d6 100644 --- a/trunk/fs/btrfs/file.c +++ b/trunk/fs/btrfs/file.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/btrfs/inode.c b/trunk/fs/btrfs/inode.c index 791eab19e330..7ffa3d34ea19 100644 --- a/trunk/fs/btrfs/inode.c +++ b/trunk/fs/btrfs/inode.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/btrfs/ioctl.c b/trunk/fs/btrfs/ioctl.c index bd88f25889f7..9f4db848db10 100644 --- a/trunk/fs/btrfs/ioctl.c +++ b/trunk/fs/btrfs/ioctl.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index 6d6d06cb6dfc..9f179d4832d5 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/char_dev.c b/trunk/fs/char_dev.c index a173551e19d7..b7c9d5187a75 100644 --- a/trunk/fs/char_dev.c +++ b/trunk/fs/char_dev.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/compat.c b/trunk/fs/compat.c index 94502dab972a..fbadb947727b 100644 --- a/trunk/fs/compat.c +++ b/trunk/fs/compat.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/compat_ioctl.c b/trunk/fs/compat_ioctl.c index f28f070a60fc..626c7483b4de 100644 --- a/trunk/fs/compat_ioctl.c +++ b/trunk/fs/compat_ioctl.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/exofs/super.c b/trunk/fs/exofs/super.c index 5ab10c3bbebe..a343b4ea62f6 100644 --- a/trunk/fs/exofs/super.c +++ b/trunk/fs/exofs/super.c @@ -31,7 +31,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include #include #include #include diff --git a/trunk/fs/ext2/ioctl.c b/trunk/fs/ext2/ioctl.c index e7431309bdca..7cb4badef927 100644 --- a/trunk/fs/ext2/ioctl.c +++ b/trunk/fs/ext2/ioctl.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/ext4/ioctl.c b/trunk/fs/ext4/ioctl.c index 24a6abb2aef5..bb415408fdb6 100644 --- a/trunk/fs/ext4/ioctl.c +++ b/trunk/fs/ext4/ioctl.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/fat/dir.c b/trunk/fs/fat/dir.c index 530b4ca01510..38ff75a0fe22 100644 --- a/trunk/fs/fat/dir.c +++ b/trunk/fs/fat/dir.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/fat/namei_msdos.c b/trunk/fs/fat/namei_msdos.c index bbc94ae4fd77..82f88733b681 100644 --- a/trunk/fs/fat/namei_msdos.c +++ b/trunk/fs/fat/namei_msdos.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "fat.h" /* Characters that are undesirable in an MS-DOS file name */ diff --git a/trunk/fs/fat/namei_vfat.c b/trunk/fs/fat/namei_vfat.c index cb6e83557112..73471b7ecc8c 100644 --- a/trunk/fs/fat/namei_vfat.c +++ b/trunk/fs/fat/namei_vfat.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include "fat.h" diff --git a/trunk/fs/fcntl.c b/trunk/fs/fcntl.c index ae413086db97..a040b764f8e3 100644 --- a/trunk/fs/fcntl.c +++ b/trunk/fs/fcntl.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/freevxfs/vxfs_super.c b/trunk/fs/freevxfs/vxfs_super.c index 1e8af939b3e4..cdbd1654e4cd 100644 --- a/trunk/fs/freevxfs/vxfs_super.c +++ b/trunk/fs/freevxfs/vxfs_super.c @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/hfs/super.c b/trunk/fs/hfs/super.c index f7fcbe49da72..6f833dc8e910 100644 --- a/trunk/fs/hfs/super.c +++ b/trunk/fs/hfs/super.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include "hfs_fs.h" diff --git a/trunk/fs/hfsplus/super.c b/trunk/fs/hfsplus/super.c index c0759fe0855b..9fc3af0c0dab 100644 --- a/trunk/fs/hfsplus/super.c +++ b/trunk/fs/hfsplus/super.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include diff --git a/trunk/fs/hpfs/dir.c b/trunk/fs/hpfs/dir.c index 8865c94f55f6..6916c41d7017 100644 --- a/trunk/fs/hpfs/dir.c +++ b/trunk/fs/hpfs/dir.c @@ -6,7 +6,6 @@ * directory VFS functions */ -#include #include "hpfs_fn.h" static int hpfs_dir_release(struct inode *inode, struct file *filp) diff --git a/trunk/fs/hpfs/file.c b/trunk/fs/hpfs/file.c index 3efabff00367..64ab52259204 100644 --- a/trunk/fs/hpfs/file.c +++ b/trunk/fs/hpfs/file.c @@ -6,7 +6,6 @@ * file VFS functions */ -#include #include "hpfs_fn.h" #define BLOCKS(size) (((size) + 511) >> 9) diff --git a/trunk/fs/hpfs/hpfs_fn.h b/trunk/fs/hpfs/hpfs_fn.h index 701ca54c0867..c2ea31bae313 100644 --- a/trunk/fs/hpfs/hpfs_fn.h +++ b/trunk/fs/hpfs/hpfs_fn.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "hpfs.h" diff --git a/trunk/fs/hpfs/inode.c b/trunk/fs/hpfs/inode.c index fe703ae46bc7..39a1bfbea312 100644 --- a/trunk/fs/hpfs/inode.c +++ b/trunk/fs/hpfs/inode.c @@ -6,7 +6,6 @@ * inode VFS functions */ -#include #include "hpfs_fn.h" void hpfs_init_inode(struct inode *i) diff --git a/trunk/fs/hpfs/namei.c b/trunk/fs/hpfs/namei.c index 82b9c4ba9ed0..b649232dde97 100644 --- a/trunk/fs/hpfs/namei.c +++ b/trunk/fs/hpfs/namei.c @@ -6,7 +6,6 @@ * adding & removing files & directories */ #include -#include #include "hpfs_fn.h" static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) diff --git a/trunk/fs/jffs2/super.c b/trunk/fs/jffs2/super.c index 0035c021395a..07a22caf2687 100644 --- a/trunk/fs/jffs2/super.c +++ b/trunk/fs/jffs2/super.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/lockd/clntproc.c b/trunk/fs/lockd/clntproc.c index 4336adba952a..f2fdcbce143e 100644 --- a/trunk/fs/lockd/clntproc.c +++ b/trunk/fs/lockd/clntproc.c @@ -7,7 +7,6 @@ */ #include -#include #include #include #include diff --git a/trunk/fs/lockd/svc4proc.c b/trunk/fs/lockd/svc4proc.c index bd173a6ca3b1..1725037374c5 100644 --- a/trunk/fs/lockd/svc4proc.c +++ b/trunk/fs/lockd/svc4proc.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/lockd/svcproc.c b/trunk/fs/lockd/svcproc.c index e1d28ddd2169..3688e55901fc 100644 --- a/trunk/fs/lockd/svcproc.c +++ b/trunk/fs/lockd/svcproc.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/nfs/delegation.c b/trunk/fs/nfs/delegation.c index 6dd48a4405b4..af05b918cb5b 100644 --- a/trunk/fs/nfs/delegation.c +++ b/trunk/fs/nfs/delegation.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include diff --git a/trunk/fs/nfs/dir.c b/trunk/fs/nfs/dir.c index 38d42c29fb92..89f98e9a024b 100644 --- a/trunk/fs/nfs/dir.c +++ b/trunk/fs/nfs/dir.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/nfs/file.c b/trunk/fs/nfs/file.c index 05062329b678..0055b813ec2c 100644 --- a/trunk/fs/nfs/file.c +++ b/trunk/fs/nfs/file.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/nfs/inode.c b/trunk/fs/nfs/inode.c index bd7938eda6a8..64f87194d390 100644 --- a/trunk/fs/nfs/inode.c +++ b/trunk/fs/nfs/inode.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/nfs/nfs4proc.c b/trunk/fs/nfs/nfs4proc.c index ff0c080db59b..92ce43517814 100644 --- a/trunk/fs/nfs/nfs4proc.c +++ b/trunk/fs/nfs/nfs4proc.c @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/nfs/read.c b/trunk/fs/nfs/read.c index 73ea5e8d66ce..96c4ebfa46f4 100644 --- a/trunk/fs/nfs/read.c +++ b/trunk/fs/nfs/read.c @@ -18,6 +18,7 @@ #include #include #include +#include #include diff --git a/trunk/fs/nfsd/nfsctl.c b/trunk/fs/nfsd/nfsctl.c index 6d0847562d87..1250fb978ac1 100644 --- a/trunk/fs/nfsd/nfsctl.c +++ b/trunk/fs/nfsd/nfsctl.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/nfsd/nfssvc.c b/trunk/fs/nfsd/nfssvc.c index 492c79b7800b..d4c9884cd54b 100644 --- a/trunk/fs/nfsd/nfssvc.c +++ b/trunk/fs/nfsd/nfssvc.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/fs/nilfs2/dir.c b/trunk/fs/nilfs2/dir.c index 1a4fa04cf071..54100acc1102 100644 --- a/trunk/fs/nilfs2/dir.c +++ b/trunk/fs/nilfs2/dir.c @@ -43,6 +43,7 @@ */ #include +#include #include "nilfs.h" #include "page.h" diff --git a/trunk/fs/ocfs2/ioctl.c b/trunk/fs/ocfs2/ioctl.c index 467b413bec21..9fcd36dcc9a0 100644 --- a/trunk/fs/ocfs2/ioctl.c +++ b/trunk/fs/ocfs2/ioctl.c @@ -7,6 +7,7 @@ #include #include +#include #define MLOG_MASK_PREFIX ML_INODE #include diff --git a/trunk/fs/reiserfs/xattr.c b/trunk/fs/reiserfs/xattr.c index 6925b835a43b..f3d47d856848 100644 --- a/trunk/fs/reiserfs/xattr.c +++ b/trunk/fs/reiserfs/xattr.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include diff --git a/trunk/fs/squashfs/super.c b/trunk/fs/squashfs/super.c index cb5fc57e370b..3b52770f46ff 100644 --- a/trunk/fs/squashfs/super.c +++ b/trunk/fs/squashfs/super.c @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/fs/ubifs/ioctl.c b/trunk/fs/ubifs/ioctl.c index 8aacd64957a2..6db7a6be6c97 100644 --- a/trunk/fs/ubifs/ioctl.c +++ b/trunk/fs/ubifs/ioctl.c @@ -25,6 +25,7 @@ /* This file implements EXT2-compatible extended attribute ioctl() calls */ #include +#include #include #include "ubifs.h" diff --git a/trunk/fs/xfs/linux-2.6/xfs_file.c b/trunk/fs/xfs/linux-2.6/xfs_file.c index 0542fd507649..f4e255441574 100644 --- a/trunk/fs/xfs/linux-2.6/xfs_file.c +++ b/trunk/fs/xfs/linux-2.6/xfs_file.c @@ -41,6 +41,7 @@ #include "xfs_ioctl.h" #include +#include static struct vm_operations_struct xfs_file_vm_ops; diff --git a/trunk/include/linux/crash_dump.h b/trunk/include/linux/crash_dump.h index 0026f267da20..2dac064d8359 100644 --- a/trunk/include/linux/crash_dump.h +++ b/trunk/include/linux/crash_dump.h @@ -3,6 +3,7 @@ #ifdef CONFIG_CRASH_DUMP #include +#include #include #include diff --git a/trunk/include/linux/hardirq.h b/trunk/include/linux/hardirq.h index 8246c697863d..45257475623c 100644 --- a/trunk/include/linux/hardirq.h +++ b/trunk/include/linux/hardirq.h @@ -2,9 +2,7 @@ #define LINUX_HARDIRQ_H #include -#ifdef CONFIG_PREEMPT #include -#endif #include #include #include diff --git a/trunk/include/linux/kmemleak.h b/trunk/include/linux/kmemleak.h index 6a63807f714e..7796aed6cdd5 100644 --- a/trunk/include/linux/kmemleak.h +++ b/trunk/include/linux/kmemleak.h @@ -27,7 +27,6 @@ extern void kmemleak_init(void); extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, gfp_t gfp); extern void kmemleak_free(const void *ptr); -extern void kmemleak_free_part(const void *ptr, size_t size); extern void kmemleak_padding(const void *ptr, unsigned long offset, size_t size); extern void kmemleak_not_leak(const void *ptr); @@ -72,9 +71,6 @@ static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, static inline void kmemleak_free(const void *ptr) { } -static inline void kmemleak_free_part(const void *ptr, size_t size) -{ -} static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags) { } diff --git a/trunk/include/linux/personality.h b/trunk/include/linux/personality.h index 126120819a0d..a84e9ff9b27e 100644 --- a/trunk/include/linux/personality.h +++ b/trunk/include/linux/personality.h @@ -40,10 +40,7 @@ enum { * Security-relevant compatibility flags that must be * cleared upon setuid or setgid exec: */ -#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | \ - ADDR_NO_RANDOMIZE | \ - ADDR_COMPAT_LAYOUT | \ - MMAP_PAGE_ZERO) +#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE) /* * Personality types. diff --git a/trunk/include/linux/quotaops.h b/trunk/include/linux/quotaops.h index 26361c4c037a..7bc457593684 100644 --- a/trunk/include/linux/quotaops.h +++ b/trunk/include/linux/quotaops.h @@ -7,6 +7,7 @@ #ifndef _LINUX_QUOTAOPS_ #define _LINUX_QUOTAOPS_ +#include #include static inline struct quota_info *sb_dqopt(struct super_block *sb) diff --git a/trunk/include/linux/slub_def.h b/trunk/include/linux/slub_def.h index c1c862b1d01a..4dcbc2c71491 100644 --- a/trunk/include/linux/slub_def.h +++ b/trunk/include/linux/slub_def.h @@ -11,7 +11,6 @@ #include #include #include -#include enum stat_item { ALLOC_FASTPATH, /* Allocation from cpu slab */ @@ -234,7 +233,6 @@ static __always_inline void *kmalloc_large(size_t size, gfp_t flags) unsigned int order = get_order(size); void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order); - kmemleak_alloc(ret, size, 1, flags); trace_kmalloc(_THIS_IP_, ret, size, PAGE_SIZE << order, flags); return ret; diff --git a/trunk/include/linux/sunrpc/xdr.h b/trunk/include/linux/sunrpc/xdr.h index b99c625fddfe..d8910b68e1bd 100644 --- a/trunk/include/linux/sunrpc/xdr.h +++ b/trunk/include/linux/sunrpc/xdr.h @@ -12,6 +12,7 @@ #include #include #include +#include /* * Buffer adjustment diff --git a/trunk/kernel/pid.c b/trunk/kernel/pid.c index 31310b5d3f50..5fa1db48d8b7 100644 --- a/trunk/kernel/pid.c +++ b/trunk/kernel/pid.c @@ -36,6 +36,7 @@ #include #include #include +#include #define pid_hashfn(nr, ns) \ hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift) @@ -512,6 +513,12 @@ void __init pidhash_init(void) pid_hash = alloc_bootmem(pidhash_size * sizeof(*(pid_hash))); if (!pid_hash) panic("Could not alloc pidhash!\n"); + /* + * pid_hash contains references to allocated struct pid objects and it + * must be scanned by kmemleak to avoid false positives. + */ + kmemleak_alloc(pid_hash, pidhash_size * sizeof(*(pid_hash)), 0, + GFP_KERNEL); for (i = 0; i < pidhash_size; i++) INIT_HLIST_HEAD(&pid_hash[i]); } diff --git a/trunk/kernel/power/user.c b/trunk/kernel/power/user.c index bf0014d6a5f0..ed97375daae9 100644 --- a/trunk/kernel/power/user.c +++ b/trunk/kernel/power/user.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include diff --git a/trunk/kernel/trace/blktrace.c b/trunk/kernel/trace/blktrace.c index 1090b0aed9ba..39af8af6fc30 100644 --- a/trunk/kernel/trace/blktrace.c +++ b/trunk/kernel/trace/blktrace.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff --git a/trunk/kernel/trace/trace.c b/trunk/kernel/trace/trace.c index 8bc8d8afea6a..3aa0a0dfdfa8 100644 --- a/trunk/kernel/trace/trace.c +++ b/trunk/kernel/trace/trace.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/mm/bootmem.c b/trunk/mm/bootmem.c index 701740c9e81b..d2a9ce952768 100644 --- a/trunk/mm/bootmem.c +++ b/trunk/mm/bootmem.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include @@ -336,8 +335,6 @@ void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, { unsigned long start, end; - kmemleak_free_part(__va(physaddr), size); - start = PFN_UP(physaddr); end = PFN_DOWN(physaddr + size); @@ -357,8 +354,6 @@ void __init free_bootmem(unsigned long addr, unsigned long size) { unsigned long start, end; - kmemleak_free_part(__va(addr), size); - start = PFN_UP(addr); end = PFN_DOWN(addr + size); @@ -521,7 +516,6 @@ static void * __init alloc_bootmem_core(struct bootmem_data *bdata, region = phys_to_virt(PFN_PHYS(bdata->node_min_pfn) + start_off); memset(region, 0, size); - kmemleak_alloc(region, size, 1, 0); return region; } diff --git a/trunk/mm/kmemleak.c b/trunk/mm/kmemleak.c index 5aabd41ffb8f..e766e1da09d2 100644 --- a/trunk/mm/kmemleak.c +++ b/trunk/mm/kmemleak.c @@ -103,10 +103,10 @@ * Kmemleak configuration and common defines. */ #define MAX_TRACE 16 /* stack trace length */ +#define REPORTS_NR 50 /* maximum number of reported leaks */ #define MSECS_MIN_AGE 5000 /* minimum object age for reporting */ #define SECS_FIRST_SCAN 60 /* delay before the first scan */ #define SECS_SCAN_WAIT 600 /* subsequent auto scanning delay */ -#define GRAY_LIST_PASSES 25 /* maximum number of gray list scans */ #define BYTES_PER_POINTER sizeof(void *) @@ -158,8 +158,6 @@ struct kmemleak_object { #define OBJECT_REPORTED (1 << 1) /* flag set to not scan the object */ #define OBJECT_NO_SCAN (1 << 2) -/* flag set on newly allocated objects */ -#define OBJECT_NEW (1 << 3) /* the list of all allocated objects */ static LIST_HEAD(object_list); @@ -198,6 +196,9 @@ static int kmemleak_stack_scan = 1; /* protects the memory scanning, parameters and debug/kmemleak file access */ static DEFINE_MUTEX(scan_mutex); +/* number of leaks reported (for limitation purposes) */ +static int reported_leaks; + /* * Early object allocation/freeing logging. Kmemleak is initialized after the * kernel allocator. However, both the kernel allocator and kmemleak may @@ -210,7 +211,6 @@ static DEFINE_MUTEX(scan_mutex); enum { KMEMLEAK_ALLOC, KMEMLEAK_FREE, - KMEMLEAK_FREE_PART, KMEMLEAK_NOT_LEAK, KMEMLEAK_IGNORE, KMEMLEAK_SCAN_AREA, @@ -274,11 +274,6 @@ static int color_gray(const struct kmemleak_object *object) return object->min_count != -1 && object->count >= object->min_count; } -static int color_black(const struct kmemleak_object *object) -{ - return object->min_count == -1; -} - /* * Objects are considered unreferenced only if their color is white, they have * not be deleted and have a minimum age to avoid false positives caused by @@ -456,7 +451,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count, INIT_HLIST_HEAD(&object->area_list); spin_lock_init(&object->lock); atomic_set(&object->use_count, 1); - object->flags = OBJECT_ALLOCATED | OBJECT_NEW; + object->flags = OBJECT_ALLOCATED; object->pointer = ptr; object->size = size; object->min_count = min_count; @@ -524,17 +519,27 @@ static void create_object(unsigned long ptr, size_t size, int min_count, * Remove the metadata (struct kmemleak_object) for a memory block from the * object_list and object_tree_root and decrement its use_count. */ -static void __delete_object(struct kmemleak_object *object) +static void delete_object(unsigned long ptr) { unsigned long flags; + struct kmemleak_object *object; write_lock_irqsave(&kmemleak_lock, flags); + object = lookup_object(ptr, 0); + if (!object) { +#ifdef DEBUG + kmemleak_warn("Freeing unknown object at 0x%08lx\n", + ptr); +#endif + write_unlock_irqrestore(&kmemleak_lock, flags); + return; + } prio_tree_remove(&object_tree_root, &object->tree_node); list_del_rcu(&object->object_list); write_unlock_irqrestore(&kmemleak_lock, flags); WARN_ON(!(object->flags & OBJECT_ALLOCATED)); - WARN_ON(atomic_read(&object->use_count) < 2); + WARN_ON(atomic_read(&object->use_count) < 1); /* * Locking here also ensures that the corresponding memory block @@ -546,64 +551,6 @@ static void __delete_object(struct kmemleak_object *object) put_object(object); } -/* - * Look up the metadata (struct kmemleak_object) corresponding to ptr and - * delete it. - */ -static void delete_object_full(unsigned long ptr) -{ - struct kmemleak_object *object; - - object = find_and_get_object(ptr, 0); - if (!object) { -#ifdef DEBUG - kmemleak_warn("Freeing unknown object at 0x%08lx\n", - ptr); -#endif - return; - } - __delete_object(object); - put_object(object); -} - -/* - * Look up the metadata (struct kmemleak_object) corresponding to ptr and - * delete it. If the memory block is partially freed, the function may create - * additional metadata for the remaining parts of the block. - */ -static void delete_object_part(unsigned long ptr, size_t size) -{ - struct kmemleak_object *object; - unsigned long start, end; - - object = find_and_get_object(ptr, 1); - if (!object) { -#ifdef DEBUG - kmemleak_warn("Partially freeing unknown object at 0x%08lx " - "(size %zu)\n", ptr, size); -#endif - return; - } - __delete_object(object); - - /* - * Create one or two objects that may result from the memory block - * split. Note that partial freeing is only done by free_bootmem() and - * this happens before kmemleak_init() is called. The path below is - * only executed during early log recording in kmemleak_init(), so - * GFP_KERNEL is enough. - */ - start = object->pointer; - end = object->pointer + object->size; - if (ptr > start) - create_object(start, ptr - start, object->min_count, - GFP_KERNEL); - if (ptr + size < end) - create_object(ptr + size, end - ptr - size, object->min_count, - GFP_KERNEL); - - put_object(object); -} /* * Make a object permanently as gray-colored so that it can no longer be * reported as a leak. This is used in general to mark a false positive. @@ -768,27 +715,12 @@ void kmemleak_free(const void *ptr) pr_debug("%s(0x%p)\n", __func__, ptr); if (atomic_read(&kmemleak_enabled) && ptr && !IS_ERR(ptr)) - delete_object_full((unsigned long)ptr); + delete_object((unsigned long)ptr); else if (atomic_read(&kmemleak_early_log)) log_early(KMEMLEAK_FREE, ptr, 0, 0, 0, 0); } EXPORT_SYMBOL_GPL(kmemleak_free); -/* - * Partial memory freeing function callback. This function is usually called - * from bootmem allocator when (part of) a memory block is freed. - */ -void kmemleak_free_part(const void *ptr, size_t size) -{ - pr_debug("%s(0x%p)\n", __func__, ptr); - - if (atomic_read(&kmemleak_enabled) && ptr && !IS_ERR(ptr)) - delete_object_part((unsigned long)ptr, size); - else if (atomic_read(&kmemleak_early_log)) - log_early(KMEMLEAK_FREE_PART, ptr, size, 0, 0, 0); -} -EXPORT_SYMBOL_GPL(kmemleak_free_part); - /* * Mark an already allocated memory block as a false positive. This will cause * the block to no longer be reported as leak and always be scanned. @@ -875,7 +807,7 @@ static int scan_should_stop(void) * found to the gray list. */ static void scan_block(void *_start, void *_end, - struct kmemleak_object *scanned, int allow_resched) + struct kmemleak_object *scanned) { unsigned long *ptr; unsigned long *start = PTR_ALIGN(_start, BYTES_PER_POINTER); @@ -886,8 +818,6 @@ static void scan_block(void *_start, void *_end, unsigned long pointer = *ptr; struct kmemleak_object *object; - if (allow_resched) - cond_resched(); if (scan_should_stop()) break; @@ -951,12 +881,12 @@ static void scan_object(struct kmemleak_object *object) goto out; if (hlist_empty(&object->area_list)) scan_block((void *)object->pointer, - (void *)(object->pointer + object->size), object, 0); + (void *)(object->pointer + object->size), object); else hlist_for_each_entry(area, elem, &object->area_list, node) scan_block((void *)(object->pointer + area->offset), (void *)(object->pointer + area->offset - + area->length), object, 0); + + area->length), object); out: spin_unlock_irqrestore(&object->lock, flags); } @@ -973,7 +903,6 @@ static void kmemleak_scan(void) struct task_struct *task; int i; int new_leaks = 0; - int gray_list_pass = 0; jiffies_last_scan = jiffies; @@ -994,7 +923,6 @@ static void kmemleak_scan(void) #endif /* reset the reference count (whiten the object) */ object->count = 0; - object->flags &= ~OBJECT_NEW; if (color_gray(object) && get_object(object)) list_add_tail(&object->gray_list, &gray_list); @@ -1003,14 +931,14 @@ static void kmemleak_scan(void) rcu_read_unlock(); /* data/bss scanning */ - scan_block(_sdata, _edata, NULL, 1); - scan_block(__bss_start, __bss_stop, NULL, 1); + scan_block(_sdata, _edata, NULL); + scan_block(__bss_start, __bss_stop, NULL); #ifdef CONFIG_SMP /* per-cpu sections scanning */ for_each_possible_cpu(i) scan_block(__per_cpu_start + per_cpu_offset(i), - __per_cpu_end + per_cpu_offset(i), NULL, 1); + __per_cpu_end + per_cpu_offset(i), NULL); #endif /* @@ -1032,7 +960,7 @@ static void kmemleak_scan(void) /* only scan if page is in use */ if (page_count(page) == 0) continue; - scan_block(page, page + 1, NULL, 1); + scan_block(page, page + 1, NULL); } } @@ -1044,8 +972,7 @@ static void kmemleak_scan(void) read_lock(&tasklist_lock); for_each_process(task) scan_block(task_stack_page(task), - task_stack_page(task) + THREAD_SIZE, - NULL, 0); + task_stack_page(task) + THREAD_SIZE, NULL); read_unlock(&tasklist_lock); } @@ -1057,7 +984,6 @@ static void kmemleak_scan(void) * kmemleak objects cannot be freed from outside the loop because their * use_count was increased. */ -repeat: object = list_entry(gray_list.next, typeof(*object), gray_list); while (&object->gray_list != &gray_list) { cond_resched(); @@ -1075,38 +1001,12 @@ static void kmemleak_scan(void) object = tmp; } - - if (scan_should_stop() || ++gray_list_pass >= GRAY_LIST_PASSES) - goto scan_end; - - /* - * Check for new objects allocated during this scanning and add them - * to the gray list. - */ - rcu_read_lock(); - list_for_each_entry_rcu(object, &object_list, object_list) { - spin_lock_irqsave(&object->lock, flags); - if ((object->flags & OBJECT_NEW) && !color_black(object) && - get_object(object)) { - object->flags &= ~OBJECT_NEW; - list_add_tail(&object->gray_list, &gray_list); - } - spin_unlock_irqrestore(&object->lock, flags); - } - rcu_read_unlock(); - - if (!list_empty(&gray_list)) - goto repeat; - -scan_end: WARN_ON(!list_empty(&gray_list)); /* - * If scanning was stopped or new objects were being allocated at a - * higher rate than gray list scanning, do not report any new - * unreferenced objects. + * If scanning was stopped do not report any new unreferenced objects. */ - if (scan_should_stop() || gray_list_pass >= GRAY_LIST_PASSES) + if (scan_should_stop()) return; /* @@ -1139,7 +1039,6 @@ static int kmemleak_scan_thread(void *arg) static int first_run = 1; pr_info("Automatic memory scanning thread started\n"); - set_user_nice(current, 10); /* * Wait before the first scan to allow the system to fully initialize. @@ -1202,11 +1101,11 @@ static void *kmemleak_seq_start(struct seq_file *seq, loff_t *pos) { struct kmemleak_object *object; loff_t n = *pos; - int err; - err = mutex_lock_interruptible(&scan_mutex); - if (err < 0) - return ERR_PTR(err); + if (!n) + reported_leaks = 0; + if (reported_leaks >= REPORTS_NR) + return NULL; rcu_read_lock(); list_for_each_entry_rcu(object, &object_list, object_list) { @@ -1232,6 +1131,8 @@ static void *kmemleak_seq_next(struct seq_file *seq, void *v, loff_t *pos) struct list_head *n = &prev_obj->object_list; ++(*pos); + if (reported_leaks >= REPORTS_NR) + goto out; rcu_read_lock(); list_for_each_continue_rcu(n, &object_list) { @@ -1240,7 +1141,7 @@ static void *kmemleak_seq_next(struct seq_file *seq, void *v, loff_t *pos) break; } rcu_read_unlock(); - +out: put_object(prev_obj); return next_obj; } @@ -1250,15 +1151,8 @@ static void *kmemleak_seq_next(struct seq_file *seq, void *v, loff_t *pos) */ static void kmemleak_seq_stop(struct seq_file *seq, void *v) { - if (!IS_ERR(v)) { - /* - * kmemleak_seq_start may return ERR_PTR if the scan_mutex - * waiting was interrupted, so only release it if !IS_ERR. - */ - mutex_unlock(&scan_mutex); - if (v) - put_object(v); - } + if (v) + put_object(v); } /* @@ -1270,8 +1164,10 @@ static int kmemleak_seq_show(struct seq_file *seq, void *v) unsigned long flags; spin_lock_irqsave(&object->lock, flags); - if ((object->flags & OBJECT_REPORTED) && unreferenced_object(object)) + if ((object->flags & OBJECT_REPORTED) && unreferenced_object(object)) { print_unreferenced(seq, object); + reported_leaks++; + } spin_unlock_irqrestore(&object->lock, flags); return 0; } @@ -1285,15 +1181,36 @@ static const struct seq_operations kmemleak_seq_ops = { static int kmemleak_open(struct inode *inode, struct file *file) { + int ret = 0; + if (!atomic_read(&kmemleak_enabled)) return -EBUSY; - return seq_open(file, &kmemleak_seq_ops); + ret = mutex_lock_interruptible(&scan_mutex); + if (ret < 0) + goto out; + if (file->f_mode & FMODE_READ) { + ret = seq_open(file, &kmemleak_seq_ops); + if (ret < 0) + goto scan_unlock; + } + return ret; + +scan_unlock: + mutex_unlock(&scan_mutex); +out: + return ret; } static int kmemleak_release(struct inode *inode, struct file *file) { - return seq_release(inode, file); + int ret = 0; + + if (file->f_mode & FMODE_READ) + seq_release(inode, file); + mutex_unlock(&scan_mutex); + + return ret; } /* @@ -1313,17 +1230,15 @@ static ssize_t kmemleak_write(struct file *file, const char __user *user_buf, { char buf[64]; int buf_size; - int ret; + + if (!atomic_read(&kmemleak_enabled)) + return -EBUSY; buf_size = min(size, (sizeof(buf) - 1)); if (strncpy_from_user(buf, user_buf, buf_size) < 0) return -EFAULT; buf[buf_size] = 0; - ret = mutex_lock_interruptible(&scan_mutex); - if (ret < 0) - return ret; - if (strncmp(buf, "off", 3) == 0) kmemleak_disable(); else if (strncmp(buf, "stack=on", 8) == 0) @@ -1336,10 +1251,11 @@ static ssize_t kmemleak_write(struct file *file, const char __user *user_buf, stop_scan_thread(); else if (strncmp(buf, "scan=", 5) == 0) { unsigned long secs; + int err; - ret = strict_strtoul(buf + 5, 0, &secs); - if (ret < 0) - goto out; + err = strict_strtoul(buf + 5, 0, &secs); + if (err < 0) + return err; stop_scan_thread(); if (secs) { jiffies_scan_wait = msecs_to_jiffies(secs * 1000); @@ -1348,12 +1264,7 @@ static ssize_t kmemleak_write(struct file *file, const char __user *user_buf, } else if (strncmp(buf, "scan", 4) == 0) kmemleak_scan(); else - ret = -EINVAL; - -out: - mutex_unlock(&scan_mutex); - if (ret < 0) - return ret; + return -EINVAL; /* ignore the rest of the buffer, only one command at a time */ *ppos += size; @@ -1382,7 +1293,7 @@ static int kmemleak_cleanup_thread(void *arg) rcu_read_lock(); list_for_each_entry_rcu(object, &object_list, object_list) - delete_object_full(object->pointer); + delete_object(object->pointer); rcu_read_unlock(); mutex_unlock(&scan_mutex); @@ -1477,9 +1388,6 @@ void __init kmemleak_init(void) case KMEMLEAK_FREE: kmemleak_free(log->ptr); break; - case KMEMLEAK_FREE_PART: - kmemleak_free_part(log->ptr, log->size); - break; case KMEMLEAK_NOT_LEAK: kmemleak_not_leak(log->ptr); break; diff --git a/trunk/mm/page_alloc.c b/trunk/mm/page_alloc.c index caa92689aac9..a35eeab2724c 100644 --- a/trunk/mm/page_alloc.c +++ b/trunk/mm/page_alloc.c @@ -4745,10 +4745,8 @@ void *__init alloc_large_system_hash(const char *tablename, * some pages at the end of hash table which * alloc_pages_exact() automatically does */ - if (get_order(size) < MAX_ORDER) { + if (get_order(size) < MAX_ORDER) table = alloc_pages_exact(size, GFP_ATOMIC); - kmemleak_alloc(table, size, 1, GFP_ATOMIC); - } } } while (!table && size > PAGE_SIZE && --log2qty); @@ -4766,6 +4764,16 @@ void *__init alloc_large_system_hash(const char *tablename, if (_hash_mask) *_hash_mask = (1 << log2qty) - 1; + /* + * If hashdist is set, the table allocation is done with __vmalloc() + * which invokes the kmemleak_alloc() callback. This function may also + * be called before the slab and kmemleak are initialised when + * kmemleak simply buffers the request to be executed later + * (GFP_ATOMIC flag ignored in this case). + */ + if (!hashdist) + kmemleak_alloc(table, size, 1, GFP_ATOMIC); + return table; } diff --git a/trunk/mm/slub.c b/trunk/mm/slub.c index b9f1491a58a1..a9201d83178b 100644 --- a/trunk/mm/slub.c +++ b/trunk/mm/slub.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -2834,15 +2835,13 @@ EXPORT_SYMBOL(__kmalloc); static void *kmalloc_large_node(size_t size, gfp_t flags, int node) { struct page *page; - void *ptr = NULL; flags |= __GFP_COMP | __GFP_NOTRACK; page = alloc_pages_node(node, flags, get_order(size)); if (page) - ptr = page_address(page); - - kmemleak_alloc(ptr, size, 1, flags); - return ptr; + return page_address(page); + else + return NULL; } #ifdef CONFIG_NUMA @@ -2927,7 +2926,6 @@ void kfree(const void *x) page = virt_to_head_page(x); if (unlikely(!PageSlab(page))) { BUG_ON(!PageCompound(page)); - kmemleak_free(x); put_page(page); return; } diff --git a/trunk/net/appletalk/ddp.c b/trunk/net/appletalk/ddp.c index bfbe13786bb4..590b83963622 100644 --- a/trunk/net/appletalk/ddp.c +++ b/trunk/net/appletalk/ddp.c @@ -54,7 +54,6 @@ #include #include #include -#include #include /* For TIOCOUTQ/INQ */ #include #include diff --git a/trunk/net/ipx/af_ipx.c b/trunk/net/ipx/af_ipx.c index f1118d92a191..417b0e309495 100644 --- a/trunk/net/ipx/af_ipx.c +++ b/trunk/net/ipx/af_ipx.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/net/irda/af_irda.c b/trunk/net/irda/af_irda.c index 80cf29aae096..cb762c8723ea 100644 --- a/trunk/net/irda/af_irda.c +++ b/trunk/net/irda/af_irda.c @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/net/irda/irnet/irnet.h b/trunk/net/irda/irnet/irnet.h index b001c361ad30..bccf4d0059f0 100644 --- a/trunk/net/irda/irnet/irnet.h +++ b/trunk/net/irda/irnet/irnet.h @@ -241,6 +241,7 @@ #include #include +#include #include #include #include diff --git a/trunk/net/irda/irnet/irnet_ppp.c b/trunk/net/irda/irnet/irnet_ppp.c index 68cbcb19cbd8..6d8ae03c14f5 100644 --- a/trunk/net/irda/irnet/irnet_ppp.c +++ b/trunk/net/irda/irnet/irnet_ppp.c @@ -13,7 +13,6 @@ * 2) as a control channel (write commands, read events) */ -#include #include "irnet_ppp.h" /* Private header */ /* Please put other headers in irnet.h - Thanks */ diff --git a/trunk/net/sunrpc/clnt.c b/trunk/net/sunrpc/clnt.c index ebfcf9b89909..5bc2f45bddf0 100644 --- a/trunk/net/sunrpc/clnt.c +++ b/trunk/net/sunrpc/clnt.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/net/sunrpc/sched.c b/trunk/net/sunrpc/sched.c index 8f459abe97cf..1102ce1251f7 100644 --- a/trunk/net/sunrpc/sched.c +++ b/trunk/net/sunrpc/sched.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include diff --git a/trunk/net/sunrpc/svc_xprt.c b/trunk/net/sunrpc/svc_xprt.c index 27d44332f017..6f33d33cc064 100644 --- a/trunk/net/sunrpc/svc_xprt.c +++ b/trunk/net/sunrpc/svc_xprt.c @@ -5,7 +5,6 @@ */ #include -#include #include #include #include diff --git a/trunk/net/wanrouter/wanmain.c b/trunk/net/wanrouter/wanmain.c index 258daa80ad92..466e2d22d256 100644 --- a/trunk/net/wanrouter/wanmain.c +++ b/trunk/net/wanrouter/wanmain.c @@ -48,7 +48,6 @@ #include #include /* support for loadable modules */ #include /* kmalloc(), kfree() */ -#include #include #include /* inline mem*, str* functions */ diff --git a/trunk/net/x25/af_x25.c b/trunk/net/x25/af_x25.c index 5e6c072c64d3..21cdc872004e 100644 --- a/trunk/net/x25/af_x25.c +++ b/trunk/net/x25/af_x25.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include