svn commit: r207278 - head/sys/net

Bjoern A. Zeeb bz at FreeBSD.org
Tue Apr 27 15:16:55 UTC 2010


Author: bz
Date: Tue Apr 27 15:16:54 2010
New Revision: 207278
URL: http://svn.freebsd.org/changeset/base/207278

Log:
  MFP4: @177254
  
  Add missing CURVNET_RESTORE() calls for multiple code paths, to stop
  leaking the currently cached vnet into callers and to the process.
  
  Sponsored by:	The FreeBSD Foundation
  Sponsored by:	CK Software GmbH
  MFC after:	4 days

Modified:
  head/sys/net/bpf.c

Modified: head/sys/net/bpf.c
==============================================================================
--- head/sys/net/bpf.c	Tue Apr 27 15:07:08 2010	(r207277)
+++ head/sys/net/bpf.c	Tue Apr 27 15:16:54 2010	(r207278)
@@ -1454,6 +1454,7 @@ bpfioctl(struct cdev *dev, u_long cmd, c
 			/* FALLSTHROUGH */
 
 		default:
+			CURVNET_RESTORE();
 			return (EINVAL);
 		}
 
@@ -1461,6 +1462,7 @@ bpfioctl(struct cdev *dev, u_long cmd, c
 		if (d->bd_sbuf != NULL || d->bd_hbuf != NULL ||
 		    d->bd_fbuf != NULL || d->bd_bif != NULL) {
 			BPFD_UNLOCK(d);
+			CURVNET_RESTORE();
 			return (EBUSY);
 		}
 		d->bd_bufmode = *(u_int *)addr;
@@ -1468,13 +1470,16 @@ bpfioctl(struct cdev *dev, u_long cmd, c
 		break;
 
 	case BIOCGETZMAX:
-		return (bpf_ioctl_getzmax(td, d, (size_t *)addr));
+		error = bpf_ioctl_getzmax(td, d, (size_t *)addr);
+		break;
 
 	case BIOCSETZBUF:
-		return (bpf_ioctl_setzbuf(td, d, (struct bpf_zbuf *)addr));
+		error = bpf_ioctl_setzbuf(td, d, (struct bpf_zbuf *)addr);
+		break;
 
 	case BIOCROTZBUF:
-		return (bpf_ioctl_rotzbuf(td, d, (struct bpf_zbuf *)addr));
+		error = bpf_ioctl_rotzbuf(td, d, (struct bpf_zbuf *)addr);
+		break;
 	}
 	CURVNET_RESTORE();
 	return (error);


More information about the svn-src-head mailing list