MFC r258291: change the ioctl definition so that the fasttrap ioctl

handler is responsible for copying in userland data
This commit is contained in:
avg 2014-02-17 13:11:15 +00:00
parent 3321f13499
commit 5add2c7be7
2 changed files with 2 additions and 15 deletions

View File

@ -2064,20 +2064,16 @@ fasttrap_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int fflag,
return (EAGAIN);
if (cmd == FASTTRAPIOC_MAKEPROBE) {
fasttrap_probe_spec_t *uprobe = (void *)arg;
fasttrap_probe_spec_t *uprobe = *(fasttrap_probe_spec_t **)arg;
fasttrap_probe_spec_t *probe;
uint64_t noffs;
size_t size;
int ret;
char *c;
#if defined(sun)
if (copyin(&uprobe->ftps_noffs, &noffs,
sizeof (uprobe->ftps_noffs)))
return (EFAULT);
#else
noffs = uprobe->ftps_noffs;
#endif
/*
* Probes must have at least one tracepoint.
@ -2093,19 +2089,10 @@ fasttrap_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int fflag,
probe = kmem_alloc(size, KM_SLEEP);
#if defined(sun)
if (copyin(uprobe, probe, size) != 0) {
kmem_free(probe, size);
return (EFAULT);
}
#else
memcpy(probe, uprobe, sizeof(*probe));
if (noffs > 1 && copyin(uprobe + 1, probe + 1, size) != 0) {
kmem_free(probe, size);
return (EFAULT);
}
#endif
/*
* Verify that the function and module strings contain no

View File

@ -42,8 +42,8 @@ extern "C" {
#define FASTTRAPIOC_MAKEPROBE (FASTTRAPIOC | 1)
#define FASTTRAPIOC_GETINSTR (FASTTRAPIOC | 2)
#else
#define FASTTRAPIOC_MAKEPROBE _IOW('f', 1, fasttrap_probe_spec_t)
#define FASTTRAPIOC_GETINSTR _IOWR('f', 2, uint8_t)
#define FASTTRAPIOC_MAKEPROBE _IO('f', 3)
#endif
typedef enum fasttrap_probe_type {