Date: Sat, 6 Nov 2004 17:25:22 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 64433 for review Message-ID: <200411061725.iA6HPMpe013299@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=64433 Change 64433 by rwatson@rwatson_zoo on 2004/11/06 17:25:09 Integ md(4) tweaks to netperf_socket. Affected files ... .. //depot/projects/netperf_socket/sys/dev/md/md.c#24 integrate .. //depot/projects/netperf_socket/sys/sys/mdioctl.h#6 integrate Differences ... ==== //depot/projects/netperf_socket/sys/dev/md/md.c#24 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/dev/md/md.c,v 1.142 2004/10/23 20:50:06 phk Exp $ + * $FreeBSD: src/sys/dev/md/md.c,v 1.144 2004/11/06 13:16:35 pjd Exp $ * */ @@ -174,6 +174,7 @@ /* MD_VNODE related fields */ struct vnode *vnode; + char file[PATH_MAX]; struct ucred *cred; /* MD_SWAP related fields */ @@ -440,7 +441,7 @@ } if (osp > 255) uma_zfree(sc->uma, (void*)osp); - if (error) + if (error != 0) break; secno++; dst += sc->sectorsize; @@ -721,7 +722,7 @@ mtx_init(&sc->queue_mtx, "md bio queue", NULL, MTX_DEF); sprintf(sc->name, "md%d", unit); error = kthread_create(md_kthread, sc, &sc->procp, 0, 0,"%s", sc->name); - if (error) { + if (error != 0) { free(sc, M_MD); return (NULL); } @@ -861,19 +862,23 @@ struct nameidata nd; int error, flags; + if (strlcpy(sc->file, mdio->md_file, sizeof(sc->file)) >= + sizeof(sc->file)) { + return (ENAMETOOLONG); + } flags = FREAD|FWRITE; - NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, mdio->md_file, td); + NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, sc->file, td); error = vn_open(&nd, &flags, 0, -1); - if (error) { + if (error != 0) { NDFREE(&nd, NDF_ONLY_PNBUF); if (error != EACCES && error != EPERM && error != EROFS) return (error); flags &= ~FWRITE; - NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, mdio->md_file, td); + NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, sc->file, td); error = vn_open(&nd, &flags, 0, -1); } NDFREE(&nd, NDF_ONLY_PNBUF); - if (error) + if (error != 0) return (error); if (nd.ni_vp->v_type != VREG || (error = VOP_GETATTR(nd.ni_vp, &vattr, td->td_ucred, td))) { @@ -984,7 +989,7 @@ } } error = mdsetcred(sc, td->td_ucred); - if (error) { + if (error != 0) { vm_object_deallocate(sc->object); sc->object = NULL; } @@ -1097,11 +1102,15 @@ mdio->md_mediasize = sc->mediasize; mdio->md_sectorsize = sc->sectorsize; if (sc->type == MD_VNODE) { - /* XXX fill this in */ - mdio->md_file = NULL; + if (strlcpy(mdio->md_file, sc->file, + sizeof(mdio->md_file)) >= sizeof(mdio->md_file)) { + return (ENAMETOOLONG); + } } return (0); case MDIOCLIST: + if (mdio->md_version != MDIOVERSION) + return (EINVAL); i = 1; LIST_FOREACH(sc, &md_softc_list, list) { if (i == MDNPAD - 1) ==== //depot/projects/netperf_socket/sys/sys/mdioctl.h#6 (text+ko) ==== @@ -37,7 +37,7 @@ * * From: src/sys/sys/vnioctl.h,v 1.4 * - * $FreeBSD: src/sys/sys/mdioctl.h,v 1.17 2004/09/16 21:32:13 pjd Exp $ + * $FreeBSD: src/sys/sys/mdioctl.h,v 1.18 2004/11/06 13:07:02 pjd Exp $ */ #ifndef _SYS_MDIOCTL_H_ @@ -54,20 +54,20 @@ unsigned md_version; /* Structure layout version */ unsigned md_unit; /* unit number */ enum md_types md_type ; /* type of disk */ - char *md_file; /* pathname of file to mount */ off_t md_mediasize; /* size of disk in bytes */ unsigned md_sectorsize; /* sectorsize */ unsigned md_options; /* options */ u_int64_t md_base; /* base address */ int md_fwheads; /* firmware heads */ int md_fwsectors; /* firmware sectors */ + char md_file[PATH_MAX]; /* pathname of file to mount */ int md_pad[MDNPAD]; /* padding for future ideas */ }; #define MD_NAME "md" #define MD_MODNAME "g_md" #define MDCTL_NAME "mdctl" -#define MDIOVERSION 0 +#define MDIOVERSION 1 /* * Before you can use a unit, it must be configured with MDIOCSET.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411061725.iA6HPMpe013299>