Deleted Added
full compact
38c38
< __FBSDID("$FreeBSD: head/sys/kern/sys_generic.c 160192 2006-07-08 20:12:14Z jhb $");
---
> __FBSDID("$FreeBSD: head/sys/kern/sys_generic.c 162711 2006-09-27 19:57:02Z ru $");
527c527
< int error;
---
> int arg, error;
529c529
< caddr_t data, memp;
---
> caddr_t data;
551c551
< ((com & IOC_VOID) && size > 0))
---
> ((com & IOC_VOID) && size > 0 && size != sizeof(int)))
555,558c555,563
< memp = malloc((u_long)size, M_IOCTLOPS, M_WAITOK);
< data = memp;
< } else {
< memp = NULL;
---
> if (!(com & IOC_VOID))
> data = malloc((u_long)size, M_IOCTLOPS, M_WAITOK);
> else {
> /* Integer argument. */
> arg = (intptr_t)uap->data;
> data = (void *)&arg;
> size = 0;
> }
> } else
560d564
< }
564c568
< free(memp, M_IOCTLOPS);
---
> free(data, M_IOCTLOPS);
580,581c584,585
< if (memp != NULL)
< free(memp, M_IOCTLOPS);
---
> if (size > 0)
> free(data, M_IOCTLOPS);