svn commit: r248923 - in stable/8/sys: . amd64/amd64 dev/sound i386/i386 ufs/ffs

Kirk McKusick mckusick at FreeBSD.org
Sat Mar 30 00:22:27 UTC 2013


Author: mckusick
Date: Sat Mar 30 00:22:26 2013
New Revision: 248923
URL: http://svnweb.freebsd.org/changeset/base/248923

Log:
  MFC of 246289:
  
  For UFS2 i_blocks is unsigned. The current "sanity" check that it
  has gone below zero after the blocks in its inode are freed is a
  no-op which the compiler fails to warn about because of the use of
  the DIP macro. Change the sanity check to compare the number of
  blocks being freed against the value i_blocks. If the number of
  blocks being freed exceeds i_blocks, just set i_blocks to zero.
  
  Reported by: Pedro Giffuni (pfg@)

Modified:
  stable/8/sys/ufs/ffs/ffs_inode.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/Makefile   (props changed)
  stable/8/sys/amd64/   (props changed)
  stable/8/sys/amd64/amd64/intr_machdep.c   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/arm/   (props changed)
  stable/8/sys/boot/   (props changed)
  stable/8/sys/bsm/   (props changed)
  stable/8/sys/cam/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/compat/   (props changed)
  stable/8/sys/conf/   (props changed)
  stable/8/sys/contrib/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/crypto/   (props changed)
  stable/8/sys/ddb/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/aac/   (props changed)
  stable/8/sys/dev/acpi_support/   (props changed)
  stable/8/sys/dev/acpica/   (props changed)
  stable/8/sys/dev/adb/   (props changed)
  stable/8/sys/dev/adlink/   (props changed)
  stable/8/sys/dev/advansys/   (props changed)
  stable/8/sys/dev/ae/   (props changed)
  stable/8/sys/dev/age/   (props changed)
  stable/8/sys/dev/agp/   (props changed)
  stable/8/sys/dev/aha/   (props changed)
  stable/8/sys/dev/ahb/   (props changed)
  stable/8/sys/dev/ahci/   (props changed)
  stable/8/sys/dev/aic/   (props changed)
  stable/8/sys/dev/aic7xxx/   (props changed)
  stable/8/sys/dev/alc/   (props changed)
  stable/8/sys/dev/ale/   (props changed)
  stable/8/sys/dev/amd/   (props changed)
  stable/8/sys/dev/amdsbwd/   (props changed)
  stable/8/sys/dev/amdtemp/   (props changed)
  stable/8/sys/dev/amr/   (props changed)
  stable/8/sys/dev/an/   (props changed)
  stable/8/sys/dev/arcmsr/   (props changed)
  stable/8/sys/dev/asmc/   (props changed)
  stable/8/sys/dev/asr/   (props changed)
  stable/8/sys/dev/ata/   (props changed)
  stable/8/sys/dev/ath/   (props changed)
  stable/8/sys/dev/atkbdc/   (props changed)
  stable/8/sys/dev/auxio/   (props changed)
  stable/8/sys/dev/bce/   (props changed)
  stable/8/sys/dev/bfe/   (props changed)
  stable/8/sys/dev/bge/   (props changed)
  stable/8/sys/dev/bktr/   (props changed)
  stable/8/sys/dev/bm/   (props changed)
  stable/8/sys/dev/buslogic/   (props changed)
  stable/8/sys/dev/bwi/   (props changed)
  stable/8/sys/dev/bwn/   (props changed)
  stable/8/sys/dev/cardbus/   (props changed)
  stable/8/sys/dev/cas/   (props changed)
  stable/8/sys/dev/ce/   (props changed)
  stable/8/sys/dev/cfe/   (props changed)
  stable/8/sys/dev/cfi/   (props changed)
  stable/8/sys/dev/ciss/   (props changed)
  stable/8/sys/dev/cm/   (props changed)
  stable/8/sys/dev/cmx/   (props changed)
  stable/8/sys/dev/coretemp/   (props changed)
  stable/8/sys/dev/cp/   (props changed)
  stable/8/sys/dev/cpuctl/   (props changed)
  stable/8/sys/dev/cpufreq/   (props changed)
  stable/8/sys/dev/cs/   (props changed)
  stable/8/sys/dev/ct/   (props changed)
  stable/8/sys/dev/ctau/   (props changed)
  stable/8/sys/dev/cx/   (props changed)
  stable/8/sys/dev/cxgb/   (props changed)
  stable/8/sys/dev/cxgbe/   (props changed)
  stable/8/sys/dev/cy/   (props changed)
  stable/8/sys/dev/dc/   (props changed)
  stable/8/sys/dev/dcons/   (props changed)
  stable/8/sys/dev/de/   (props changed)
  stable/8/sys/dev/digi/   (props changed)
  stable/8/sys/dev/dpms/   (props changed)
  stable/8/sys/dev/dpt/   (props changed)
  stable/8/sys/dev/drm/   (props changed)
  stable/8/sys/dev/e1000/   (props changed)
  stable/8/sys/dev/ed/   (props changed)
  stable/8/sys/dev/eisa/   (props changed)
  stable/8/sys/dev/en/   (props changed)
  stable/8/sys/dev/ep/   (props changed)
  stable/8/sys/dev/esp/   (props changed)
  stable/8/sys/dev/et/   (props changed)
  stable/8/sys/dev/ex/   (props changed)
  stable/8/sys/dev/exca/   (props changed)
  stable/8/sys/dev/fatm/   (props changed)
  stable/8/sys/dev/fb/   (props changed)
  stable/8/sys/dev/fdc/   (props changed)
  stable/8/sys/dev/fe/   (props changed)
  stable/8/sys/dev/firewire/   (props changed)
  stable/8/sys/dev/flash/   (props changed)
  stable/8/sys/dev/fxp/   (props changed)
  stable/8/sys/dev/gem/   (props changed)
  stable/8/sys/dev/glxsb/   (props changed)
  stable/8/sys/dev/hatm/   (props changed)
  stable/8/sys/dev/hifn/   (props changed)
  stable/8/sys/dev/hme/   (props changed)
  stable/8/sys/dev/hpt27xx/   (props changed)
  stable/8/sys/dev/hptiop/   (props changed)
  stable/8/sys/dev/hptmv/   (props changed)
  stable/8/sys/dev/hptrr/   (props changed)
  stable/8/sys/dev/hwpmc/   (props changed)
  stable/8/sys/dev/ic/   (props changed)
  stable/8/sys/dev/ichsmb/   (props changed)
  stable/8/sys/dev/ichwd/   (props changed)
  stable/8/sys/dev/ida/   (props changed)
  stable/8/sys/dev/ie/   (props changed)
  stable/8/sys/dev/ieee488/   (props changed)
  stable/8/sys/dev/if_ndis/   (props changed)
  stable/8/sys/dev/iicbus/   (props changed)
  stable/8/sys/dev/iir/   (props changed)
  stable/8/sys/dev/io/   (props changed)
  stable/8/sys/dev/ipmi/   (props changed)
  stable/8/sys/dev/ips/   (props changed)
  stable/8/sys/dev/ipw/   (props changed)
  stable/8/sys/dev/isci/   (props changed)
  stable/8/sys/dev/iscsi/   (props changed)
  stable/8/sys/dev/isp/   (props changed)
  stable/8/sys/dev/ispfw/   (props changed)
  stable/8/sys/dev/iwi/   (props changed)
  stable/8/sys/dev/iwn/   (props changed)
  stable/8/sys/dev/ixgb/   (props changed)
  stable/8/sys/dev/ixgbe/   (props changed)
  stable/8/sys/dev/jme/   (props changed)
  stable/8/sys/dev/joy/   (props changed)
  stable/8/sys/dev/kbd/   (props changed)
  stable/8/sys/dev/kbdmux/   (props changed)
  stable/8/sys/dev/ksyms/   (props changed)
  stable/8/sys/dev/le/   (props changed)
  stable/8/sys/dev/led/   (props changed)
  stable/8/sys/dev/lge/   (props changed)
  stable/8/sys/dev/lindev/   (props changed)
  stable/8/sys/dev/lmc/   (props changed)
  stable/8/sys/dev/malo/   (props changed)
  stable/8/sys/dev/mc146818/   (props changed)
  stable/8/sys/dev/mca/   (props changed)
  stable/8/sys/dev/mcd/   (props changed)
  stable/8/sys/dev/md/   (props changed)
  stable/8/sys/dev/mem/   (props changed)
  stable/8/sys/dev/mfi/   (props changed)
  stable/8/sys/dev/mge/   (props changed)
  stable/8/sys/dev/mii/   (props changed)
  stable/8/sys/dev/mk48txx/   (props changed)
  stable/8/sys/dev/mlx/   (props changed)
  stable/8/sys/dev/mly/   (props changed)
  stable/8/sys/dev/mmc/   (props changed)
  stable/8/sys/dev/mn/   (props changed)
  stable/8/sys/dev/mps/   (props changed)
  stable/8/sys/dev/mpt/   (props changed)
  stable/8/sys/dev/mse/   (props changed)
  stable/8/sys/dev/msk/   (props changed)
  stable/8/sys/dev/mvs/   (props changed)
  stable/8/sys/dev/mwl/   (props changed)
  stable/8/sys/dev/mxge/   (props changed)
  stable/8/sys/dev/my/   (props changed)
  stable/8/sys/dev/ncv/   (props changed)
  stable/8/sys/dev/netmap/   (props changed)
  stable/8/sys/dev/nfe/   (props changed)
  stable/8/sys/dev/nge/   (props changed)
  stable/8/sys/dev/nmdm/   (props changed)
  stable/8/sys/dev/nsp/   (props changed)
  stable/8/sys/dev/null/   (props changed)
  stable/8/sys/dev/nve/   (props changed)
  stable/8/sys/dev/nvram/   (props changed)
  stable/8/sys/dev/nxge/   (props changed)
  stable/8/sys/dev/oce/   (props changed)
  stable/8/sys/dev/ofw/   (props changed)
  stable/8/sys/dev/patm/   (props changed)
  stable/8/sys/dev/pbio/   (props changed)
  stable/8/sys/dev/pccard/   (props changed)
  stable/8/sys/dev/pccbb/   (props changed)
  stable/8/sys/dev/pcf/   (props changed)
  stable/8/sys/dev/pci/   (props changed)
  stable/8/sys/dev/pcn/   (props changed)
  stable/8/sys/dev/pdq/   (props changed)
  stable/8/sys/dev/powermac_nvram/   (props changed)
  stable/8/sys/dev/ppbus/   (props changed)
  stable/8/sys/dev/ppc/   (props changed)
  stable/8/sys/dev/pst/   (props changed)
  stable/8/sys/dev/puc/   (props changed)
  stable/8/sys/dev/quicc/   (props changed)
  stable/8/sys/dev/ral/   (props changed)
  stable/8/sys/dev/random/   (props changed)
  stable/8/sys/dev/rc/   (props changed)
  stable/8/sys/dev/re/   (props changed)
  stable/8/sys/dev/rndtest/   (props changed)
  stable/8/sys/dev/rp/   (props changed)
  stable/8/sys/dev/safe/   (props changed)
  stable/8/sys/dev/sbni/   (props changed)
  stable/8/sys/dev/scc/   (props changed)
  stable/8/sys/dev/scd/   (props changed)
  stable/8/sys/dev/sdhci/   (props changed)
  stable/8/sys/dev/sec/   (props changed)
  stable/8/sys/dev/sf/   (props changed)
  stable/8/sys/dev/sge/   (props changed)
  stable/8/sys/dev/si/   (props changed)
  stable/8/sys/dev/siba/   (props changed)
  stable/8/sys/dev/siis/   (props changed)
  stable/8/sys/dev/sio/   (props changed)
  stable/8/sys/dev/sis/   (props changed)
  stable/8/sys/dev/sk/   (props changed)
  stable/8/sys/dev/smbus/   (props changed)
  stable/8/sys/dev/smc/   (props changed)
  stable/8/sys/dev/sn/   (props changed)
  stable/8/sys/dev/snc/   (props changed)
  stable/8/sys/dev/snp/   (props changed)
  stable/8/sys/dev/sound/   (props changed)
  stable/8/sys/dev/sound/chip.h   (props changed)
  stable/8/sys/dev/sound/clone.c   (props changed)
  stable/8/sys/dev/sound/clone.h   (props changed)
  stable/8/sys/dev/sound/driver.c   (props changed)
  stable/8/sys/dev/sound/isa/   (props changed)
  stable/8/sys/dev/sound/macio/   (props changed)
  stable/8/sys/dev/sound/midi/   (props changed)
  stable/8/sys/dev/sound/pci/   (props changed)
  stable/8/sys/dev/sound/pcm/   (props changed)
  stable/8/sys/dev/sound/sbus/   (props changed)
  stable/8/sys/dev/sound/unit.c   (props changed)
  stable/8/sys/dev/sound/unit.h   (props changed)
  stable/8/sys/dev/sound/usb/   (props changed)
  stable/8/sys/dev/sound/version.h   (props changed)
  stable/8/sys/dev/speaker/   (props changed)
  stable/8/sys/dev/spibus/   (props changed)
  stable/8/sys/dev/ste/   (props changed)
  stable/8/sys/dev/stg/   (props changed)
  stable/8/sys/dev/stge/   (props changed)
  stable/8/sys/dev/streams/   (props changed)
  stable/8/sys/dev/sym/   (props changed)
  stable/8/sys/dev/syscons/   (props changed)
  stable/8/sys/dev/tdfx/   (props changed)
  stable/8/sys/dev/ti/   (props changed)
  stable/8/sys/dev/tl/   (props changed)
  stable/8/sys/dev/tpm/   (props changed)
  stable/8/sys/dev/trm/   (props changed)
  stable/8/sys/dev/tsec/   (props changed)
  stable/8/sys/dev/twa/   (props changed)
  stable/8/sys/dev/twe/   (props changed)
  stable/8/sys/dev/tws/   (props changed)
  stable/8/sys/dev/tx/   (props changed)
  stable/8/sys/dev/txp/   (props changed)
  stable/8/sys/dev/uart/   (props changed)
  stable/8/sys/dev/ubsec/   (props changed)
  stable/8/sys/dev/usb/   (props changed)
  stable/8/sys/dev/utopia/   (props changed)
  stable/8/sys/dev/vge/   (props changed)
  stable/8/sys/dev/viawd/   (props changed)
  stable/8/sys/dev/virtio/   (props changed)
  stable/8/sys/dev/vkbd/   (props changed)
  stable/8/sys/dev/vr/   (props changed)
  stable/8/sys/dev/vte/   (props changed)
  stable/8/sys/dev/vx/   (props changed)
  stable/8/sys/dev/watchdog/   (props changed)
  stable/8/sys/dev/wb/   (props changed)
  stable/8/sys/dev/wbwd/   (props changed)
  stable/8/sys/dev/wds/   (props changed)
  stable/8/sys/dev/wi/   (props changed)
  stable/8/sys/dev/wl/   (props changed)
  stable/8/sys/dev/wpi/   (props changed)
  stable/8/sys/dev/xe/   (props changed)
  stable/8/sys/dev/xen/   (props changed)
  stable/8/sys/dev/xl/   (props changed)
  stable/8/sys/fs/   (props changed)
  stable/8/sys/gdb/   (props changed)
  stable/8/sys/geom/   (props changed)
  stable/8/sys/gnu/   (props changed)
  stable/8/sys/i386/   (props changed)
  stable/8/sys/i386/i386/intr_machdep.c   (props changed)
  stable/8/sys/ia64/   (props changed)
  stable/8/sys/isa/   (props changed)
  stable/8/sys/kern/   (props changed)
  stable/8/sys/kgssapi/   (props changed)
  stable/8/sys/libkern/   (props changed)
  stable/8/sys/mips/   (props changed)
  stable/8/sys/modules/   (props changed)
  stable/8/sys/net/   (props changed)
  stable/8/sys/net80211/   (props changed)
  stable/8/sys/netatalk/   (props changed)
  stable/8/sys/netgraph/   (props changed)
  stable/8/sys/netinet/   (props changed)
  stable/8/sys/netinet6/   (props changed)
  stable/8/sys/netipsec/   (props changed)
  stable/8/sys/netipx/   (props changed)
  stable/8/sys/netnatm/   (props changed)
  stable/8/sys/netncp/   (props changed)
  stable/8/sys/netsmb/   (props changed)
  stable/8/sys/nfs/   (props changed)
  stable/8/sys/nfsclient/   (props changed)
  stable/8/sys/nfsserver/   (props changed)
  stable/8/sys/nlm/   (props changed)
  stable/8/sys/opencrypto/   (props changed)
  stable/8/sys/pc98/   (props changed)
  stable/8/sys/pci/   (props changed)
  stable/8/sys/powerpc/   (props changed)
  stable/8/sys/rpc/   (props changed)
  stable/8/sys/security/   (props changed)
  stable/8/sys/sparc64/   (props changed)
  stable/8/sys/sun4v/   (props changed)
  stable/8/sys/sys/   (props changed)
  stable/8/sys/tools/   (props changed)
  stable/8/sys/ufs/   (props changed)
  stable/8/sys/vm/   (props changed)
  stable/8/sys/x86/   (props changed)
  stable/8/sys/xdr/   (props changed)
  stable/8/sys/xen/   (props changed)

Modified: stable/8/sys/ufs/ffs/ffs_inode.c
==============================================================================
--- stable/8/sys/ufs/ffs/ffs_inode.c	Fri Mar 29 22:58:15 2013	(r248922)
+++ stable/8/sys/ufs/ffs/ffs_inode.c	Sat Mar 30 00:22:26 2013	(r248923)
@@ -508,9 +508,9 @@ done:
 	 */
 	ip->i_size = length;
 	DIP_SET(ip, i_size, length);
-	DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - blocksreleased);
-
-	if (DIP(ip, i_blocks) < 0)			/* sanity */
+	if (DIP(ip, i_blocks) >= blocksreleased)
+		DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - blocksreleased);
+	else	/* sanity */
 		DIP_SET(ip, i_blocks, 0);
 	ip->i_flag |= IN_CHANGE;
 #ifdef QUOTA


More information about the svn-src-stable-8 mailing list