PERFORCE change 132789 for review
Robert Watson
rwatson at FreeBSD.org
Tue Jan 8 06:40:45 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=132789
Change 132789 by rwatson at rwatson_cinnamon on 2008/01/08 14:40:00
Integrate zcopybpf.
Affected files ...
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/conf/GENERIC#11 integrate
.. //depot/projects/zcopybpf/src/sys/arm/at91/if_ate.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/conf/NOTES#16 integrate
.. //depot/projects/zcopybpf/src/sys/conf/options#13 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/sys/mvec.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/sys/uipc_mvec.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ichwd/ichwd.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ichwd/ichwd.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/streams/streams.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_rum.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_zyd.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdevs#13 integrate
.. //depot/projects/zcopybpf/src/sys/fs/devfs/devfs_vnops.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/fs/fifofs/fifo_vnops.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/fs/hpfs/hpfs_vfsops.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/conf/GENERIC#11 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/pmap.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/conf/GENERIC#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_descrip.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_event.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_lock.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_generic.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_pipe.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_socket.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/uipc_mqueue.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/uipc_sem.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_syscalls.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_vnops.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/opencrypto/cryptodev.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/pc98/conf/GENERIC#9 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/conf/GENERIC#9 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/conf/GENERIC#7 integrate
.. //depot/projects/zcopybpf/src/sys/sys/file.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/syscallsubr.h#3 integrate
Differences ...
==== //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#12 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.602 2008/01/06 18:51:03 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.603 2008/01/08 08:30:30 alc Exp $");
/*
* Manages physical address maps.
@@ -2075,15 +2075,8 @@
pd_entry_t ptepde;
vm_page_t free;
-#if defined(PMAP_DIAGNOSTIC)
- /*
- * XXX This makes pmap_remove_all() illegal for non-managed pages!
- */
- if (m->flags & PG_FICTITIOUS) {
- panic("pmap_remove_all: illegal for unmanaged page, va: 0x%lx",
- VM_PAGE_TO_PHYS(m));
- }
-#endif
+ KASSERT((m->flags & PG_FICTITIOUS) == 0,
+ ("pmap_remove_all: page %p is fictitious", m));
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
pmap = PV_PMAP(pv);
==== //depot/projects/zcopybpf/src/sys/amd64/conf/GENERIC#11 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.490 2007/12/15 00:56:16 scottl Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.491 2008/01/07 21:40:09 jhb Exp $
cpu HAMMER
ident GENERIC
@@ -52,6 +52,7 @@
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
+options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
==== //depot/projects/zcopybpf/src/sys/arm/at91/if_ate.c#6 (text) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.22 2007/12/16 12:57:12 stas Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.23 2008/01/07 00:36:09 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -191,7 +191,7 @@
callout_init_mtx(&sc->tick_ch, &sc->sc_mtx, 0);
if ((err = ate_get_mac(sc, eaddr)) != 0) {
- device_printf(dev, "No MAC address set");
+ device_printf(dev, "No MAC address set\n");
goto out;
}
ate_set_mac(sc, eaddr);
==== //depot/projects/zcopybpf/src/sys/conf/NOTES#16 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1464 2007/12/27 23:19:03 des Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1465 2008/01/07 21:40:09 jhb Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -300,6 +300,9 @@
# Enable FreeBSD6 compatibility syscalls
options COMPAT_FREEBSD6
+# Enable FreeBSD7 compatibility syscalls
+options COMPAT_FREEBSD7
+
#
# These three options provide support for System V Interface
# Definition-style interprocess communication, in the form of shared
==== //depot/projects/zcopybpf/src/sys/conf/options#13 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.614 2007/12/27 16:45:39 alc Exp $
+# $FreeBSD: src/sys/conf/options,v 1.615 2008/01/07 21:40:09 jhb Exp $
#
# On the handling of kernel options
#
@@ -67,6 +67,7 @@
COMPAT_FREEBSD4 opt_compat.h
COMPAT_FREEBSD5 opt_compat.h
COMPAT_FREEBSD6 opt_compat.h
+COMPAT_FREEBSD7 opt_compat.h
COMPILING_LINT opt_global.h
CY_PCI_FASTINTR
DIRECTIO
==== //depot/projects/zcopybpf/src/sys/dev/cxgb/sys/mvec.h#5 (text+ko) ====
@@ -25,7 +25,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/cxgb/sys/mvec.h,v 1.8 2007/12/17 08:17:50 kmacy Exp $
+ * $FreeBSD: src/sys/dev/cxgb/sys/mvec.h,v 1.9 2008/01/07 01:18:16 kmacy Exp $
*
***************************************************************************/
@@ -84,6 +84,7 @@
* along that needs 1 byte
*/
uint16_t mi_pad;
+ struct mbuf *mi_mbuf; /* need to be able to handle the @#$@@#%$ing packet zone */
#define mi_size mi_ext.ext_size
#define mi_base mi_ext.ext_buf
#define mi_args mi_ext.ext_args
==== //depot/projects/zcopybpf/src/sys/dev/cxgb/sys/uipc_mvec.c#5 (text+ko) ====
@@ -29,7 +29,7 @@
***************************************************************************/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/sys/uipc_mvec.c,v 1.15 2007/12/16 05:19:48 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/sys/uipc_mvec.c,v 1.16 2008/01/07 01:18:16 kmacy Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -125,6 +125,7 @@
mi->mi_flags = m->m_flags;
mi->mi_len = m->m_len;
+ mi->mi_mbuf = NULL;
if (m->m_flags & M_PKTHDR) {
mi->mi_ether_vtag = m->m_pkthdr.ether_vtag;
@@ -151,6 +152,7 @@
mi->mi_type = m->m_ext.ext_type;
mi->mi_size = m->m_ext.ext_size;
mi->mi_refcnt = m->m_ext.ref_cnt;
+ mi->mi_mbuf = m;
} else {
mi->mi_base = (caddr_t)m;
mi->mi_data = m->m_data;
@@ -267,7 +269,8 @@
goto err_out;
} else if (seg_count >= TX_MAX_SEGS) {
if (cxgb_debug)
- printf("mbuf chain too long: %d max allowed %d\n", seg_count, TX_MAX_SEGS);
+ printf("mbuf chain too long: %d max allowed %d\n",
+ seg_count, TX_MAX_SEGS);
if (!defragged) {
n = m_defrag(*m, M_DONTWAIT);
if (n == NULL) {
@@ -300,9 +303,10 @@
}
n = *m;
while (n) {
- if (((n->m_flags & (M_EXT|M_NOFREE)) == M_EXT) && (n->m_len > 0))
+ if (((n->m_flags & (M_EXT|M_NOFREE)) == M_EXT) &&
+ (n->m_len > 0) && (n->m_ext.ext_type != EXT_PACKET) )
n->m_flags &= ~M_EXT;
- else if (n->m_len > 0) {
+ else if ((n->m_len > 0) || (n->m_ext.ext_type == EXT_PACKET)) {
n = n->m_next;
continue;
}
@@ -380,6 +384,10 @@
*/
while (dofree == 0) {
cnt = *(mi->mi_refcnt);
+ if (mi->mi_type == EXT_PACKET) {
+ dofree = 1;
+ break;
+ }
if (atomic_cmpset_int(mi->mi_refcnt, cnt, cnt - 1)) {
if (cnt == 1)
dofree = 1;
@@ -419,7 +427,10 @@
("%s: ext_free not set", __func__));
(*(mi->mi_ext.ext_free))(mi->mi_ext.ext_buf,
mi->mi_ext.ext_args);
- break;
+ break;
+ case EXT_PACKET:
+ uma_zfree(zone_pack, mi->mi_mbuf);
+ break;
default:
dump_mi(mi);
panic("unknown mv type in m_free_vec type=%d idx=%d", type, idx);
==== //depot/projects/zcopybpf/src/sys/dev/ichwd/ichwd.c#6 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.13 2007/12/31 11:44:01 des Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.14 2008/01/07 09:46:39 des Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -93,6 +93,7 @@
{ DEVICEID_ICH8, "Intel ICH8 watchdog timer", 8 },
{ DEVICEID_ICH8DH, "Intel ICH8DH watchdog timer", 8 },
{ DEVICEID_ICH8DO, "Intel ICH8DO watchdog timer", 8 },
+ { DEVICEID_ICH8M, "Intel ICH8M watchdog timer", 8 },
{ DEVICEID_63XXESB, "Intel 63XXESB watchdog timer", 8 },
{ DEVICEID_ICH9, "Intel ICH9 watchdog timer", 9 },
{ DEVICEID_ICH9R, "Intel ICH9R watchdog timer", 9 },
==== //depot/projects/zcopybpf/src/sys/dev/ichwd/ichwd.h#5 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ichwd/ichwd.h,v 1.7 2007/12/31 11:44:01 des Exp $
+ * $FreeBSD: src/sys/dev/ichwd/ichwd.h,v 1.8 2008/01/07 09:46:39 des Exp $
*/
#ifndef _ICHWD_H_
@@ -85,6 +85,7 @@
#define DEVICEID_ICH8 0x2810
#define DEVICEID_ICH8DH 0x2812
#define DEVICEID_ICH8DO 0x2814
+#define DEVICEID_ICH8M 0x2815
#define DEVICEID_ICH9 0x2918
#define DEVICEID_ICH9R 0x2916
#define DEVICEID_ICH9DH 0x2912
==== //depot/projects/zcopybpf/src/sys/dev/streams/streams.c#5 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/streams/streams.c,v 1.57 2007/12/30 01:42:12 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/streams/streams.c,v 1.58 2008/01/07 20:05:18 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -90,6 +90,7 @@
static struct fileops svr4_netops = {
.fo_read = soo_read,
.fo_write = soo_write,
+ .fo_truncate = soo_truncate,
.fo_ioctl = soo_ioctl,
.fo_poll = soo_poll,
.fo_kqfilter = soo_kqfilter,
==== //depot/projects/zcopybpf/src/sys/dev/usb/if_rum.c#6 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/usb/if_rum.c,v 1.15 2007/11/21 05:51:43 kevlo Exp $ */
+/* $FreeBSD: src/sys/dev/usb/if_rum.c,v 1.16 2008/01/07 09:14:37 kevlo Exp $ */
/*-
* Copyright (c) 2005-2007 Damien Bergamini <damien.bergamini at free.fr>
@@ -18,7 +18,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_rum.c,v 1.15 2007/11/21 05:51:43 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_rum.c,v 1.16 2008/01/07 09:14:37 kevlo Exp $");
/*-
* Ralink Technology RT2501USB/RT2601USB chipset driver
@@ -118,6 +118,7 @@
{ USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2671 },
{ USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL113R2 },
{ USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL172 },
+ { USB_VENDOR_SPARKLAN, USB_PRODUCT_SPARKLAN_RT2573 },
{ USB_VENDOR_SURECOM, USB_PRODUCT_SURECOM_RT2573 }
};
==== //depot/projects/zcopybpf/src/sys/dev/usb/if_zyd.c#5 (text+ko) ====
@@ -1,6 +1,6 @@
/* $OpenBSD: if_zyd.c,v 1.52 2007/02/11 00:08:04 jsg Exp $ */
/* $NetBSD: if_zyd.c,v 1.7 2007/06/21 04:04:29 kiyohara Exp $ */
-/* $FreeBSD: src/sys/dev/usb/if_zyd.c,v 1.11 2007/12/01 08:53:03 kevlo Exp $ */
+/* $FreeBSD: src/sys/dev/usb/if_zyd.c,v 1.12 2008/01/07 11:31:55 weongyo Exp $ */
/*-
* Copyright (c) 2006 by Damien Bergamini <damien.bergamini at free.fr>
@@ -2788,6 +2788,6 @@
static devclass_t zyd_devclass;
DRIVER_MODULE(zyd, uhub, zyd_driver, zyd_devclass, usbd_driver_load, 0);
-MODULE_DEPEND(rum, wlan, 1, 1, 1);
-MODULE_DEPEND(rum, wlan_amrr, 1, 1, 1);
-MODULE_DEPEND(rum, usb, 1, 1, 1);
+MODULE_DEPEND(zyd, wlan, 1, 1, 1);
+MODULE_DEPEND(zyd, wlan_amrr, 1, 1, 1);
+MODULE_DEPEND(zyd, usb, 1, 1, 1);
==== //depot/projects/zcopybpf/src/sys/dev/usb/usbdevs#13 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.336 2007/12/11 06:41:38 davidxu Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.337 2008/01/07 09:14:37 kevlo Exp $
/* $NetBSD: usbdevs,v 1.392 2004/12/29 08:38:44 imp Exp $ */
/*-
@@ -594,6 +594,7 @@
vendor OQO 0x1557 OQO
vendor UMEDIA 0x157e U-MEDIA Communications
vendor FIBERLINE 0x1582 Fiberline
+vendor SPARKLAN 0x15a9 SparkLAN
vendor SOHOWARE 0x15e8 SOHOware
vendor UMAX 0x1606 UMAX Data Systems
vendor INSIDEOUT 0x1608 Inside Out Networks
@@ -2111,6 +2112,9 @@
product SOURCENEXT KEIKAI8 0x039f KeikaiDenwa 8
product SOURCENEXT KEIKAI8_CHG 0x012e KeikaiDenwa 8 with charger
+/* SparkLAN products */
+product SPARKLAN RT2573 0x0004 RT2573
+
/* Sphairon Access Systems GmbH products */
product SPHAIRON UB801R 0x0110 UB801R
==== //depot/projects/zcopybpf/src/sys/fs/devfs/devfs_vnops.c#8 (text+ko) ====
@@ -31,7 +31,7 @@
* @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95
* From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43
*
- * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.151 2007/12/30 01:42:13 jeff Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.153 2008/01/08 04:45:24 jhb Exp $
*/
/*
@@ -992,17 +992,20 @@
vnode_destroy_vobject(vp);
+ VI_LOCK(vp);
dev_lock();
dev = vp->v_rdev;
vp->v_rdev = NULL;
if (dev == NULL) {
dev_unlock();
+ VI_UNLOCK(vp);
return (0);
}
dev->si_usecount -= vp->v_usecount;
dev_unlock();
+ VI_UNLOCK(vp);
dev_rel(dev);
return (0);
}
@@ -1278,6 +1281,13 @@
return (devfs_allocv(de, ap->a_dvp->v_mount, ap->a_vpp, td));
}
+static int
+devfs_truncate_f(struct file *fp, off_t length, struct ucred *cred, struct thread *td)
+{
+
+ return (vnops.fo_truncate(fp, length, cred, td));
+}
+
/* ARGSUSED */
static int
devfs_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td)
@@ -1322,6 +1332,7 @@
static struct fileops devfs_ops_f = {
.fo_read = devfs_read_f,
.fo_write = devfs_write_f,
+ .fo_truncate = devfs_truncate_f,
.fo_ioctl = devfs_ioctl_f,
.fo_poll = devfs_poll_f,
.fo_kqfilter = devfs_kqfilter_f,
==== //depot/projects/zcopybpf/src/sys/fs/fifofs/fifo_vnops.c#7 (text+ko) ====
@@ -29,7 +29,7 @@
* SUCH DAMAGE.
*
* @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95
- * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c,v 1.139 2007/12/30 01:42:13 jeff Exp $
+ * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c,v 1.140 2008/01/07 20:05:18 jhb Exp $
*/
#include <sys/param.h>
@@ -61,10 +61,12 @@
static fo_kqfilter_t fifo_kqfilter_f;
static fo_stat_t fifo_stat_f;
static fo_close_t fifo_close_f;
+static fo_truncate_t fifo_truncate_f;
struct fileops fifo_ops_f = {
.fo_read = fifo_read_f,
.fo_write = fifo_write_f,
+ .fo_truncate = fifo_truncate_f,
.fo_ioctl = fifo_ioctl_f,
.fo_poll = fifo_poll_f,
.fo_kqfilter = fifo_kqfilter_f,
@@ -724,6 +726,13 @@
}
static int
+fifo_truncate_f(struct file *fp, off_t length, struct ucred *cred, struct thread *td)
+{
+
+ return (vnops.fo_truncate(fp, length, cred, td));
+}
+
+static int
fifo_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td)
{
struct fifoinfo *fip;
==== //depot/projects/zcopybpf/src/sys/fs/hpfs/hpfs_vfsops.c#5 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.61 2007/10/16 10:54:52 alfred Exp $
+ * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.62 2008/01/07 16:51:24 attilio Exp $
*/
@@ -323,7 +323,11 @@
if (bp)
brelse (bp);
mp->mnt_data = NULL;
+ DROP_GIANT();
+ g_topology_lock();
g_vfs_close(cp, td);
+ g_topology_unlock();
+ PICKUP_GIANT();
return (error);
}
@@ -353,7 +357,11 @@
}
vinvalbuf(hpmp->hpm_devvp, V_SAVE, td, 0, 0);
+ DROP_GIANT();
+ g_topology_lock();
g_vfs_close(hpmp->hpm_cp, td);
+ g_topology_unlock();
+ PICKUP_GIANT();
vrele(hpmp->hpm_devvp);
dprintf(("hpfs_umount: freeing memory...\n"));
==== //depot/projects/zcopybpf/src/sys/i386/conf/GENERIC#11 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.479 2007/12/15 00:56:15 scottl Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.480 2008/01/07 21:40:10 jhb Exp $
cpu I486_CPU
cpu I586_CPU
@@ -52,6 +52,7 @@
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
+options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
==== //depot/projects/zcopybpf/src/sys/i386/i386/pmap.c#12 (text+ko) ====
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.605 2008/01/06 18:51:04 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.606 2008/01/08 08:30:30 alc Exp $");
/*
* Manages physical address maps.
@@ -2119,15 +2119,8 @@
pt_entry_t *pte, tpte;
vm_page_t free;
-#if defined(PMAP_DIAGNOSTIC)
- /*
- * XXX This makes pmap_remove_all() illegal for non-managed pages!
- */
- if (m->flags & PG_FICTITIOUS) {
- panic("pmap_remove_all: illegal for unmanaged page, va: 0x%x",
- VM_PAGE_TO_PHYS(m));
- }
-#endif
+ KASSERT((m->flags & PG_FICTITIOUS) == 0,
+ ("pmap_remove_all: page %p is fictitious", m));
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
sched_pin();
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
==== //depot/projects/zcopybpf/src/sys/ia64/conf/GENERIC#7 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.93 2007/12/02 20:40:33 rwatson Exp $
+# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.94 2008/01/07 21:40:10 jhb Exp $
cpu ITANIUM
ident GENERIC
@@ -29,6 +29,7 @@
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
+options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options DDB # Support DDB
options FFS # Berkeley Fast Filesystem
options GDB # Support remote GDB
==== //depot/projects/zcopybpf/src/sys/kern/kern_descrip.c#10 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.316 2008/01/03 01:26:59 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.317 2008/01/07 20:05:18 jhb Exp $");
#include "opt_compat.h"
#include "opt_ddb.h"
@@ -2760,6 +2760,13 @@
}
static int
+badfo_truncate(struct file *fp, off_t length, struct ucred *active_cred, struct thread *td)
+{
+
+ return (EINVAL);
+}
+
+static int
badfo_ioctl(struct file *fp, u_long com, void *data, struct ucred *active_cred, struct thread *td)
{
@@ -2797,6 +2804,7 @@
struct fileops badfileops = {
.fo_read = badfo_readwrite,
.fo_write = badfo_readwrite,
+ .fo_truncate = badfo_truncate,
.fo_ioctl = badfo_ioctl,
.fo_poll = badfo_poll,
.fo_kqfilter = badfo_kqfilter,
==== //depot/projects/zcopybpf/src/sys/kern/kern_event.c#7 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.115 2007/12/30 01:42:13 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.116 2008/01/07 20:05:18 jhb Exp $");
#include "opt_ktrace.h"
@@ -105,6 +105,7 @@
static fo_rdwr_t kqueue_read;
static fo_rdwr_t kqueue_write;
+static fo_truncate_t kqueue_truncate;
static fo_ioctl_t kqueue_ioctl;
static fo_poll_t kqueue_poll;
static fo_kqfilter_t kqueue_kqfilter;
@@ -114,6 +115,7 @@
static struct fileops kqueueops = {
.fo_read = kqueue_read,
.fo_write = kqueue_write,
+ .fo_truncate = kqueue_truncate,
.fo_ioctl = kqueue_ioctl,
.fo_poll = kqueue_poll,
.fo_kqfilter = kqueue_kqfilter,
@@ -1324,6 +1326,15 @@
/*ARGSUSED*/
static int
+kqueue_truncate(struct file *fp, off_t length, struct ucred *active_cred,
+ struct thread *td)
+{
+
+ return (EINVAL);
+}
+
+/*ARGSUSED*/
+static int
kqueue_ioctl(struct file *fp, u_long cmd, void *data,
struct ucred *active_cred, struct thread *td)
{
==== //depot/projects/zcopybpf/src/sys/kern/subr_lock.c#9 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_lock.c,v 1.20 2007/12/31 03:45:51 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_lock.c,v 1.21 2008/01/08 01:11:40 kris Exp $");
#include "opt_ddb.h"
#include "opt_mprof.h"
@@ -492,7 +492,7 @@
if (!lock_prof_enable || (lo->lo_flags & LO_NOPROFILE))
return;
if (lock_prof_skipcount &&
- (++lock_prof_count % lock_prof_skipcount) == 0)
+ (++lock_prof_count % lock_prof_skipcount) != 0)
return;
spin = LOCK_CLASS(lo) == &lock_class_mtx_spin;
if (spin && lock_prof_skipspin == 1)
==== //depot/projects/zcopybpf/src/sys/kern/sys_generic.c#8 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sys_generic.c,v 1.161 2007/12/30 01:42:13 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sys_generic.c,v 1.162 2008/01/07 20:05:18 jhb Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -52,6 +52,7 @@
#include <sys/socketvar.h>
#include <sys/uio.h>
#include <sys/kernel.h>
+#include <sys/ktr.h>
#include <sys/limits.h>
#include <sys/malloc.h>
#include <sys/poll.h>
@@ -69,7 +70,7 @@
#include <sys/ktrace.h>
#endif
-#include <sys/ktr.h>
+#include <security/audit/audit.h>
static MALLOC_DEFINE(M_IOCTLOPS, "ioctlops", "ioctl data buffer");
static MALLOC_DEFINE(M_SELECT, "select", "select() buffer");
@@ -544,6 +545,70 @@
return (error);
}
+/*
+ * Truncate a file given a file descriptor.
+ *
+ * Can't use fget_write() here, since must return EINVAL and not EBADF if the
+ * descriptor isn't writable.
+ */
+int
+kern_ftruncate(td, fd, length)
+ struct thread *td;
+ int fd;
+ off_t length;
+{
+ struct file *fp;
+ int error;
+
+ AUDIT_ARG(fd, fd);
+ if (length < 0)
+ return (EINVAL);
+ error = fget(td, fd, &fp);
+ if (error)
+ return (error);
+ AUDIT_ARG(file, td->td_proc, fp);
+ if (!(fp->f_flag & FWRITE)) {
+ fdrop(fp, td);
+ return (EINVAL);
+ }
+ error = fo_truncate(fp, length, td->td_ucred, td);
+ fdrop(fp, td);
+ return (error);
+}
+
+#ifndef _SYS_SYSPROTO_H_
+struct ftruncate_args {
+ int fd;
+ int pad;
+ off_t length;
+};
+#endif
+int
+ftruncate(td, uap)
+ struct thread *td;
+ struct ftruncate_args *uap;
+{
+
+ return (kern_ftruncate(td, uap->fd, uap->length));
+}
+
+#if defined(COMPAT_43)
+#ifndef _SYS_SYSPROTO_H_
+struct oftruncate_args {
+ int fd;
+ long length;
+};
+#endif
+int
+oftruncate(td, uap)
+ struct thread *td;
+ struct oftruncate_args *uap;
+{
+
+ return (kern_ftruncate(td, uap->fd, uap->length));
+}
+#endif /* COMPAT_43 */
+
#ifndef _SYS_SYSPROTO_H_
struct ioctl_args {
int fd;
==== //depot/projects/zcopybpf/src/sys/kern/sys_pipe.c#7 (text+ko) ====
@@ -89,7 +89,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sys_pipe.c,v 1.195 2007/12/30 01:42:13 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sys_pipe.c,v 1.196 2008/01/07 20:05:18 jhb Exp $");
#include "opt_mac.h"
@@ -140,6 +140,7 @@
*/
static fo_rdwr_t pipe_read;
static fo_rdwr_t pipe_write;
+static fo_truncate_t pipe_truncate;
static fo_ioctl_t pipe_ioctl;
static fo_poll_t pipe_poll;
static fo_kqfilter_t pipe_kqfilter;
@@ -149,6 +150,7 @@
static struct fileops pipeops = {
.fo_read = pipe_read,
.fo_write = pipe_write,
+ .fo_truncate = pipe_truncate,
.fo_ioctl = pipe_ioctl,
.fo_poll = pipe_poll,
.fo_kqfilter = pipe_kqfilter,
@@ -1230,6 +1232,18 @@
return (error);
}
+/* ARGSUSED */
+static int
+pipe_truncate(fp, length, active_cred, td)
+ struct file *fp;
+ off_t length;
+ struct ucred *active_cred;
+ struct thread *td;
+{
+
+ return (EINVAL);
+}
+
/*
* we implement a very minimal set of ioctls for compatibility with sockets.
*/
==== //depot/projects/zcopybpf/src/sys/kern/sys_socket.c#5 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sys_socket.c,v 1.74 2007/10/24 19:03:55 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sys_socket.c,v 1.75 2008/01/07 20:05:18 jhb Exp $");
#include "opt_mac.h"
@@ -59,6 +59,7 @@
struct fileops socketops = {
.fo_read = soo_read,
.fo_write = soo_write,
+ .fo_truncate = soo_truncate,
.fo_ioctl = soo_ioctl,
.fo_poll = soo_poll,
.fo_kqfilter = soo_kqfilter,
@@ -110,6 +111,14 @@
}
int
+soo_truncate(struct file *fp, off_t length, struct ucred *active_cred,
+ struct thread *td)
+{
+
+ return (EINVAL);
+}
+
+int
soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred,
struct thread *td)
{
==== //depot/projects/zcopybpf/src/sys/kern/tty.c#4 (text+ko) ====
@@ -71,7 +71,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/tty.c,v 1.273 2007/07/20 09:41:54 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/tty.c,v 1.274 2008/01/08 04:53:28 jhb Exp $");
#include "opt_compat.h"
#include "opt_tty.h"
@@ -3040,16 +3040,19 @@
*
* XXX: This shall sleep until all threads have left the driver.
*/
-
void
ttyfree(struct tty *tp)
{
+ struct cdev *dev;
u_int unit;
mtx_assert(&Giant, MA_OWNED);
ttygone(tp);
unit = tp->t_devunit;
- destroy_dev(tp->t_mdev);
+ dev = tp->t_mdev;
+ tp->t_dev = NULL;
+ ttyrel(tp);
+ destroy_dev(dev);
free_unr(tty_unit, unit);
}
@@ -3065,7 +3068,6 @@
tp = TAILQ_FIRST(&tty_list);
if (tp != NULL)
ttyref(tp);
- mtx_unlock(&tty_list_mutex);
while (tp != NULL) {
bzero(&xt, sizeof xt);
xt.xt_size = sizeof xt;
@@ -3074,6 +3076,18 @@
xt.xt_cancc = tp->t_canq.c_cc;
xt.xt_outcc = tp->t_outq.c_cc;
XT_COPY(line);
+
+ /*
+ * XXX: We hold the tty list lock while doing this to
+ * work around a race with pty/pts tty destruction.
+ * They set t_dev to NULL and then call ttyrel() to
+ * free the structure which will block on the list
+ * lock before they call destroy_dev() on the cdev
+ * backing t_dev.
+ *
+ * XXX: ttyfree() now does the same since it has been
+ * fixed to not leak ttys.
+ */
if (tp->t_dev != NULL)
xt.xt_dev = dev2udev(tp->t_dev);
XT_COPY(state);
@@ -3096,6 +3110,7 @@
XT_COPY(olowat);
XT_COPY(ospeedwat);
#undef XT_COPY
+ mtx_unlock(&tty_list_mutex);
error = SYSCTL_OUT(req, &xt, sizeof xt);
if (error != 0) {
ttyrel(tp);
@@ -3108,7 +3123,9 @@
mtx_unlock(&tty_list_mutex);
ttyrel(tp);
tp = tp2;
+ mtx_lock(&tty_list_mutex);
}
+ mtx_unlock(&tty_list_mutex);
return (0);
}
==== //depot/projects/zcopybpf/src/sys/kern/uipc_mqueue.c#6 (text+ko) ====
@@ -43,7 +43,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_mqueue.c,v 1.26 2007/12/30 01:42:13 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_mqueue.c,v 1.27 2008/01/07 20:05:18 jhb Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -2317,6 +2317,14 @@
}
static int
+mqf_truncate(struct file *fp, off_t length, struct ucred *active_cred,
+ struct thread *td)
+{
+
+ return (EINVAL);
+}
+
+static int
mqf_ioctl(struct file *fp, u_long cmd, void *data,
struct ucred *active_cred, struct thread *td)
{
@@ -2433,6 +2441,7 @@
static struct fileops mqueueops = {
.fo_read = mqf_read,
.fo_write = mqf_write,
+ .fo_truncate = mqf_truncate,
.fo_ioctl = mqf_ioctl,
.fo_poll = mqf_poll,
.fo_kqfilter = mqf_kqfilter,
==== //depot/projects/zcopybpf/src/sys/kern/uipc_sem.c#4 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_sem.c,v 1.29 2007/10/24 19:03:55 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_sem.c,v 1.30 2008/01/07 22:03:19 rwatson Exp $");
#include "opt_mac.h"
#include "opt_posix.h"
@@ -442,6 +442,9 @@
sem_free(struct ksem *ks)
{
+#ifdef MAC
+ mac_posixsem_destroy(ks);
+#endif
nsems--;
if (ks->ks_onlist)
LIST_REMOVE(ks, ks_entry);
==== //depot/projects/zcopybpf/src/sys/kern/vfs_syscalls.c#9 (text+ko) ====
@@ -35,7 +35,7 @@
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list