svn commit: r220092 - stable/8/sys/compat/freebsd32
Konstantin Belousov
kib at FreeBSD.org
Mon Mar 28 08:22:14 UTC 2011
Author: kib
Date: Mon Mar 28 08:22:13 2011
New Revision: 220092
URL: http://svn.freebsd.org/changeset/base/220092
Log:
MFC r219986:
Fix file leakage in the freebsd32_ioctl routines.
Modified:
stable/8/sys/compat/freebsd32/freebsd32_ioctl.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/compat/freebsd32/freebsd32_ioctl.c
==============================================================================
--- stable/8/sys/compat/freebsd32/freebsd32_ioctl.c Mon Mar 28 07:00:41 2011 (r220091)
+++ stable/8/sys/compat/freebsd32/freebsd32_ioctl.c Mon Mar 28 08:22:13 2011 (r220092)
@@ -70,7 +70,6 @@ freebsd32_ioctl_md(struct thread *td, st
panic("%s: where is my ioctl data??", __func__);
if (uap->com & IOC_IN) {
if ((error = copyin(uap->data, &md32, sizeof(md32)))) {
- fdrop(fp, td);
return (error);
}
CP(md32, mdv, md_version);
@@ -121,7 +120,6 @@ freebsd32_ioctl_md(struct thread *td, st
CP(mdv, md32, md_fwsectors);
error = copyout(&md32, uap->data, sizeof(md32));
}
- fdrop(fp, td);
return error;
}
@@ -144,7 +142,6 @@ freebsd32_ioctl_ioc_toc_header(struct th
CP(toch32, toch, ending_track);
error = fo_ioctl(fp, CDIOREADTOCHEADER, (caddr_t)&toch,
td->td_ucred, td);
- fdrop(fp, td);
return (error);
}
@@ -175,7 +172,6 @@ freebsd32_ioctl_ioc_read_toc(struct thre
PTROUT_CP(toce, toce32, data);
error = copyout(&toce32, uap->data, sizeof(toce32));
}
- fdrop(fp, td);
return error;
}
@@ -192,7 +188,6 @@ freebsd32_ioctl_fiodgname(struct thread
CP(fgn32, fgn, len);
PTRIN_CP(fgn32, fgn, buf);
error = fo_ioctl(fp, FIODGNAME, (caddr_t)&fgn, td->td_ucred, td);
- fdrop(fp, td);
return (error);
}
@@ -219,16 +214,20 @@ freebsd32_ioctl(struct thread *td, struc
case MDIOCDETACH_32: /* FALLTHROUGH */
case MDIOCQUERY_32: /* FALLTHROUGH */
case MDIOCLIST_32:
- return freebsd32_ioctl_md(td, uap, fp);
+ error = freebsd32_ioctl_md(td, uap, fp);
+ break;
case CDIOREADTOCENTRYS_32:
- return freebsd32_ioctl_ioc_read_toc(td, uap, fp);
+ error = freebsd32_ioctl_ioc_read_toc(td, uap, fp);
+ break;
case CDIOREADTOCHEADER_32:
- return freebsd32_ioctl_ioc_toc_header(td, uap, fp);
+ error = freebsd32_ioctl_ioc_toc_header(td, uap, fp);
+ break;
case FIODGNAME_32:
- return freebsd32_ioctl_fiodgname(td, uap, fp);
+ error = freebsd32_ioctl_fiodgname(td, uap, fp);
+ break;
default:
fdrop(fp, td);
@@ -237,4 +236,7 @@ freebsd32_ioctl(struct thread *td, struc
PTRIN_CP(*uap, ap, data);
return ioctl(td, &ap);
}
+
+ fdrop(fp, td);
+ return error;
}
More information about the svn-src-stable
mailing list