Date: Sat, 3 May 2014 17:39:04 +0000 (UTC) From: Mark Murray <markm@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r265282 - in projects/random_number_generator: . bin/dd lib/libutil release/doc/en_US.ISO8859-1/hardware release/doc/share/misc share/man/man4 sys/dev/drm2/radeon sys/fs/msdosfs sys/mod... Message-ID: <201405031739.s43Hd4Xe074317@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markm Date: Sat May 3 17:39:03 2014 New Revision: 265282 URL: http://svnweb.freebsd.org/changeset/base/265282 Log: MFC - tracking commit. Merging r265260 through r265281. Modified: projects/random_number_generator/Makefile.inc1 projects/random_number_generator/bin/dd/conv.c projects/random_number_generator/bin/dd/dd.h projects/random_number_generator/lib/libutil/kinfo_getfile.3 projects/random_number_generator/release/doc/en_US.ISO8859-1/hardware/article.xml projects/random_number_generator/release/doc/share/misc/dev.archlist.txt projects/random_number_generator/share/man/man4/mpr.4 projects/random_number_generator/share/man/man4/rsu.4 projects/random_number_generator/share/man/man4/urtwn.4 projects/random_number_generator/sys/dev/drm2/radeon/radeon_drv.c projects/random_number_generator/sys/dev/drm2/radeon/radeon_ioc32.c projects/random_number_generator/sys/fs/msdosfs/msdosfs_vnops.c projects/random_number_generator/sys/modules/drm2/radeonkms/Makefile projects/random_number_generator/sys/net/route.c projects/random_number_generator/sys/net/route.h projects/random_number_generator/sys/netinet/in_rmx.c projects/random_number_generator/sys/netinet6/in6_ifattach.c projects/random_number_generator/tools/tools/nanobsd/nanobsd.sh projects/random_number_generator/usr.bin/ssh-copy-id/ssh-copy-id.sh projects/random_number_generator/usr.bin/top/machine.c Directory Properties: projects/random_number_generator/ (props changed) projects/random_number_generator/lib/libutil/ (props changed) projects/random_number_generator/share/man/man4/ (props changed) projects/random_number_generator/sys/ (props changed) Modified: projects/random_number_generator/Makefile.inc1 ============================================================================== --- projects/random_number_generator/Makefile.inc1 Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/Makefile.inc1 Sat May 3 17:39:03 2014 (r265282) @@ -1001,7 +1001,7 @@ buildkernel: cd ${KRNLCONFDIR}; \ PATH=${TMPPATH} \ config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ - -I ${KERNCONFDIR} ${KERNCONFDIR}/${_kernel} + -I '${KERNCONFDIR}' '${KERNCONFDIR}/${_kernel}' .endif .if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) @echo @@ -1816,7 +1816,7 @@ DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF} .if !defined(FDT_DTS_FILE) || empty(FDT_DTS_FILE) .if exists(${KERNCONFDIR}/${KERNCONF}) FDT_DTS_FILE!= awk 'BEGIN {FS="="} /^makeoptions[[:space:]]+FDT_DTS_FILE/ {print $$2}' \ - ${KERNCONFDIR}/${KERNCONF} ; echo + '${KERNCONFDIR}/${KERNCONF}' ; echo .endif .endif Modified: projects/random_number_generator/bin/dd/conv.c ============================================================================== --- projects/random_number_generator/bin/dd/conv.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/bin/dd/conv.c Sat May 3 17:39:03 2014 (r265282) @@ -74,7 +74,7 @@ def(void) dd_out(0); /* - * Ddout copies the leftover output to the beginning of + * dd_out copies the leftover output to the beginning of * the buffer and resets the output buffer. Reset the * input buffer to match it. */ Modified: projects/random_number_generator/bin/dd/dd.h ============================================================================== --- projects/random_number_generator/bin/dd/dd.h Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/bin/dd/dd.h Sat May 3 17:39:03 2014 (r265282) @@ -41,7 +41,7 @@ typedef struct { /* XXX ssize_t? */ size_t dbcnt; /* current buffer byte count */ size_t dbrcnt; /* last read byte count */ - size_t dbsz; /* buffer size */ + size_t dbsz; /* block size */ #define ISCHR 0x01 /* character device (warn on short) */ #define ISPIPE 0x02 /* pipe-like (see position.c) */ Modified: projects/random_number_generator/lib/libutil/kinfo_getfile.3 ============================================================================== --- projects/random_number_generator/lib/libutil/kinfo_getfile.3 Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/lib/libutil/kinfo_getfile.3 Sat May 3 17:39:03 2014 (r265282) @@ -48,7 +48,7 @@ field contains the process identifier. This should be the a process that you have privilege to access. The .Ar cntp -field is allows the caller to know how many records are returned. +field allows the caller to know how many records are returned. .Pp This function is a wrapper around .Xr sysctl 3 Modified: projects/random_number_generator/release/doc/en_US.ISO8859-1/hardware/article.xml ============================================================================== --- projects/random_number_generator/release/doc/en_US.ISO8859-1/hardware/article.xml Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/release/doc/en_US.ISO8859-1/hardware/article.xml Sat May 3 17:39:03 2014 (r265282) @@ -1012,6 +1012,8 @@ &hwlist.ral; + &hwlist.rsu; + &hwlist.rum; &hwlist.run; @@ -1024,6 +1026,8 @@ &hwlist.urtw; + &hwlist.urtwn; + <para>[&arch.amd64;, &arch.i386;, &arch.pc98;] Lucent Technologies WaveLAN/IEEE 802.11b wireless network adapters and workalikes using the Lucent Hermes, Intersil PRISM-II, Modified: projects/random_number_generator/release/doc/share/misc/dev.archlist.txt ============================================================================== --- projects/random_number_generator/release/doc/share/misc/dev.archlist.txt Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/release/doc/share/misc/dev.archlist.txt Sat May 3 17:39:03 2014 (r265282) @@ -108,6 +108,7 @@ qlxgbe amd64 qlxge amd64 rc i386 ral i386,amd64 +rsu i386,amd64 rue i386,pc98,amd64 rum i386,amd64 run i386,amd64 Modified: projects/random_number_generator/share/man/man4/mpr.4 ============================================================================== --- projects/random_number_generator/share/man/man4/mpr.4 Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/share/man/man4/mpr.4 Sat May 3 17:39:03 2014 (r265282) @@ -66,7 +66,7 @@ controllers. .Sh HARDWARE The following controllers are supported by the .Nm -driver +driver: .Pp .Bl -bullet -compact .It Modified: projects/random_number_generator/share/man/man4/rsu.4 ============================================================================== --- projects/random_number_generator/share/man/man4/rsu.4 Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/share/man/man4/rsu.4 Sat May 3 17:39:03 2014 (r265282) @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd July 29 2013 +.Dd May 3, 2014 .Dt RSU 4 .Os .Sh NAME @@ -40,7 +40,8 @@ place the following line in if_rsu_load="YES" .Ed .Pp -After you have read the license in /usr/share/doc/legal/realtek +After you have read the license in +.Pa /usr/share/doc/legal/realtek you will want to add the following lines to .Xr loader.conf 5 : .Bd -literal -offset indent @@ -93,18 +94,19 @@ due to serious weaknesses in it. The .Nm driver can be configured at runtime with -.Xr ifconfig 8 -or on boot with -.Xr hostname 1 . +.Xr ifconfig 8 . .Sh FILES The driver needs at least version 1.2 of the following firmware file, which is loaded when an interface is attached: .Pp .Bl -tag -width Ds -offset indent -compact -.It /boot/kernel/rsu-rtl8712fw.ko +.It Pa /boot/kernel/rsu-rtl8712fw.ko .El .Sh HARDWARE -The following adapters should work: +The +.Nm +driver provices support for Realtek RTL8188SU/RTL8192SU USB IEEE 802.11b/g/n +wireless network adapters, including: .Pp .Bl -tag -width Ds -offset indent -compact .It ASUS USB-N10 @@ -149,14 +151,15 @@ The driver will reset the hardware. This should not happen. .El .Sh SEE ALSO -.Xr hostname 1 , .Xr intro 1 , -.Xr usb 3 , +.Xr usb 4 , .Xr netintro 4 , .Xr rsufw 4 , .Xr wlan 4 , .Xr arp 8 , -.Xr ifconfig 8 +.Xr hostapd 8 , +.Xr ifconfig 8 , +.Xr wpa_supplicant 8 .Sh HISTORY The .Nm Modified: projects/random_number_generator/share/man/man4/urtwn.4 ============================================================================== --- projects/random_number_generator/share/man/man4/urtwn.4 Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/share/man/man4/urtwn.4 Sat May 3 17:39:03 2014 (r265282) @@ -14,7 +14,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 25, 2014 +.Dd May 3, 2014 .Dt URTWN 4 .Os .Sh NAME @@ -80,7 +80,10 @@ must be agreed by adding the following l firmware license .El .Sh HARDWARE -The following adapters should work: +The +.Nm +driver supports Realtek RTL8188CU/RTL8188EU/RTL8192CU based USB +IEEE 802.11b/g/n wireless network adapters, including: .Pp .Bl -tag -width Ds -offset indent -compact .It ASUS USB-N10 NANO @@ -122,9 +125,9 @@ The driver will reset the hardware. This should not happen. .El .Sh SEE ALSO -.Xr urtwnfw 4 , .Xr intro 4 , .Xr netintro 4 , +.Xr urtwnfw 4 , .Xr usb 4 , .Xr wlan 4 , .Xr wlan_ccmp 4 , Modified: projects/random_number_generator/sys/dev/drm2/radeon/radeon_drv.c ============================================================================== --- projects/random_number_generator/sys/dev/drm2/radeon/radeon_drv.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/dev/drm2/radeon/radeon_drv.c Sat May 3 17:39:03 2014 (r265282) @@ -85,6 +85,10 @@ extern int radeon_get_crtc_scanoutpos(st int *vpos, int *hpos); extern struct drm_ioctl_desc radeon_ioctls_kms[]; extern int radeon_max_kms_ioctl; +#ifdef COMPAT_FREEBSD32 +extern struct drm_ioctl_desc radeon_compat_ioctls[]; +extern int radeon_num_compat_ioctls; +#endif #ifdef DUMBBELL_WIP int radeon_mmap(struct file *filp, struct vm_area_struct *vma); #endif /* DUMBBELL_WIP */ @@ -466,6 +470,10 @@ radeon_attach(device_t kdev) if (radeon_modeset == 1) { kms_driver.driver_features |= DRIVER_MODESET; kms_driver.max_ioctl = radeon_max_kms_ioctl; +#ifdef COMPAT_FREEBSD32 + kms_driver.compat_ioctls = radeon_compat_ioctls; + kms_driver.compat_ioctls_nr = &radeon_num_compat_ioctls; +#endif radeon_register_atpx_handler(); } dev->driver = &kms_driver; Modified: projects/random_number_generator/sys/dev/drm2/radeon/radeon_ioc32.c ============================================================================== --- projects/random_number_generator/sys/dev/drm2/radeon/radeon_ioc32.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/dev/drm2/radeon/radeon_ioc32.c Sat May 3 17:39:03 2014 (r265282) @@ -31,10 +31,13 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <linux/compat.h> +#include "opt_compat.h" -#include <drm/drmP.h> -#include <drm/radeon_drm.h> +#ifdef COMPAT_FREEBSD32 + +#include <dev/drm2/drmP.h> +#include <dev/drm2/drm.h> +#include <dev/drm2/radeon/radeon_drm.h> #include "radeon_drv.h" typedef struct drm_radeon_init32 { @@ -60,42 +63,37 @@ typedef struct drm_radeon_init32 { u32 gart_textures_offset; } drm_radeon_init32_t; -static int compat_radeon_cp_init(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_init(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_init32_t init32; - drm_radeon_init_t __user *init; + drm_radeon_init32_t *init32; + drm_radeon_init_t __user init; - if (copy_from_user(&init32, (void __user *)arg, sizeof(init32))) - return -EFAULT; + init32 = arg; - init = compat_alloc_user_space(sizeof(*init)); - if (!access_ok(VERIFY_WRITE, init, sizeof(*init)) - || __put_user(init32.func, &init->func) - || __put_user(init32.sarea_priv_offset, &init->sarea_priv_offset) - || __put_user(init32.is_pci, &init->is_pci) - || __put_user(init32.cp_mode, &init->cp_mode) - || __put_user(init32.gart_size, &init->gart_size) - || __put_user(init32.ring_size, &init->ring_size) - || __put_user(init32.usec_timeout, &init->usec_timeout) - || __put_user(init32.fb_bpp, &init->fb_bpp) - || __put_user(init32.front_offset, &init->front_offset) - || __put_user(init32.front_pitch, &init->front_pitch) - || __put_user(init32.back_offset, &init->back_offset) - || __put_user(init32.back_pitch, &init->back_pitch) - || __put_user(init32.depth_bpp, &init->depth_bpp) - || __put_user(init32.depth_offset, &init->depth_offset) - || __put_user(init32.depth_pitch, &init->depth_pitch) - || __put_user(init32.fb_offset, &init->fb_offset) - || __put_user(init32.mmio_offset, &init->mmio_offset) - || __put_user(init32.ring_offset, &init->ring_offset) - || __put_user(init32.ring_rptr_offset, &init->ring_rptr_offset) - || __put_user(init32.buffers_offset, &init->buffers_offset) - || __put_user(init32.gart_textures_offset, - &init->gart_textures_offset)) - return -EFAULT; + init.func = init32->func; + init.sarea_priv_offset = (unsigned long)init32->sarea_priv_offset; + init.is_pci = init32->is_pci; + init.cp_mode = init32->cp_mode; + init.gart_size = init32->gart_size; + init.ring_size = init32->ring_size; + init.usec_timeout = init32->usec_timeout; + init.fb_bpp = init32->fb_bpp; + init.front_offset = init32->front_offset; + init.front_pitch = init32->front_pitch; + init.back_offset = init32->back_offset; + init.back_pitch = init32->back_pitch; + init.depth_bpp = init32->depth_bpp; + init.depth_offset = init32->depth_offset; + init.depth_pitch = init32->depth_pitch; + init.fb_offset = (unsigned long)init32->fb_offset; + init.mmio_offset = (unsigned long)init32->mmio_offset; + init.ring_offset = (unsigned long)init32->ring_offset; + init.ring_rptr_offset = (unsigned long)init32->ring_rptr_offset; + init.buffers_offset = (unsigned long)init32->buffers_offset; + init.gart_textures_offset = (unsigned long)init32->gart_textures_offset; - return drm_ioctl(file, DRM_IOCTL_RADEON_CP_INIT, (unsigned long)init); + return radeon_cp_init(dev, &init, file_priv); } typedef struct drm_radeon_clear32 { @@ -107,50 +105,37 @@ typedef struct drm_radeon_clear32 { u32 depth_boxes; } drm_radeon_clear32_t; -static int compat_radeon_cp_clear(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_clear(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_clear32_t clr32; - drm_radeon_clear_t __user *clr; + drm_radeon_clear32_t *clr32; + drm_radeon_clear_t __user clr; - if (copy_from_user(&clr32, (void __user *)arg, sizeof(clr32))) - return -EFAULT; + clr32 = arg; - clr = compat_alloc_user_space(sizeof(*clr)); - if (!access_ok(VERIFY_WRITE, clr, sizeof(*clr)) - || __put_user(clr32.flags, &clr->flags) - || __put_user(clr32.clear_color, &clr->clear_color) - || __put_user(clr32.clear_depth, &clr->clear_depth) - || __put_user(clr32.color_mask, &clr->color_mask) - || __put_user(clr32.depth_mask, &clr->depth_mask) - || __put_user((void __user *)(unsigned long)clr32.depth_boxes, - &clr->depth_boxes)) - return -EFAULT; + clr.flags = clr32->flags; + clr.clear_color = clr32->clear_color; + clr.clear_depth = clr32->clear_depth; + clr.color_mask = clr32->color_mask; + clr.depth_mask = clr32->depth_mask; + clr.depth_boxes = (drm_radeon_clear_rect_t *)(unsigned long)clr32->depth_boxes; - return drm_ioctl(file, DRM_IOCTL_RADEON_CLEAR, (unsigned long)clr); + return radeon_ioctls[DRM_IOCTL_RADEON_CLEAR].func(dev, &clr, file_priv); } typedef struct drm_radeon_stipple32 { u32 mask; } drm_radeon_stipple32_t; -static int compat_radeon_cp_stipple(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_stipple(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { drm_radeon_stipple32_t __user *argp = (void __user *)arg; - drm_radeon_stipple_t __user *request; - u32 mask; + drm_radeon_stipple_t __user request; - if (get_user(mask, &argp->mask)) - return -EFAULT; + request.mask = (unsigned int *)(unsigned long)argp->mask; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user((unsigned int __user *)(unsigned long)mask, - &request->mask)) - return -EFAULT; - - return drm_ioctl(file, DRM_IOCTL_RADEON_STIPPLE, (unsigned long)request); + return radeon_ioctls[DRM_IOCTL_RADEON_STIPPLE].func(dev, &request, file_priv); } typedef struct drm_radeon_tex_image32 { @@ -168,43 +153,32 @@ typedef struct drm_radeon_texture32 { u32 image; } drm_radeon_texture32_t; -static int compat_radeon_cp_texture(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_texture(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_texture32_t req32; - drm_radeon_texture_t __user *request; - drm_radeon_tex_image32_t img32; - drm_radeon_tex_image_t __user *image; - - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; - if (req32.image == 0) + drm_radeon_texture32_t *req32; + drm_radeon_texture_t __user request; + drm_radeon_tex_image32_t *img32; + drm_radeon_tex_image_t __user image; + + req32 = arg; + if (req32->image == 0) return -EINVAL; - if (copy_from_user(&img32, (void __user *)(unsigned long)req32.image, - sizeof(img32))) - return -EFAULT; - - request = compat_alloc_user_space(sizeof(*request) + sizeof(*image)); - if (!access_ok(VERIFY_WRITE, request, - sizeof(*request) + sizeof(*image))) - return -EFAULT; - image = (drm_radeon_tex_image_t __user *) (request + 1); - - if (__put_user(req32.offset, &request->offset) - || __put_user(req32.pitch, &request->pitch) - || __put_user(req32.format, &request->format) - || __put_user(req32.width, &request->width) - || __put_user(req32.height, &request->height) - || __put_user(image, &request->image) - || __put_user(img32.x, &image->x) - || __put_user(img32.y, &image->y) - || __put_user(img32.width, &image->width) - || __put_user(img32.height, &image->height) - || __put_user((const void __user *)(unsigned long)img32.data, - &image->data)) - return -EFAULT; + img32 = (drm_radeon_tex_image32_t *)(unsigned long)req32->image; - return drm_ioctl(file, DRM_IOCTL_RADEON_TEXTURE, (unsigned long)request); + request.offset = req32->offset; + request.pitch = req32->pitch; + request.format = req32->format; + request.width = req32->width; + request.height = req32->height; + request.image = ℑ + image.x = img32->x; + image.y = img32->y; + image.width = img32->width; + image.height = img32->height; + image.data = (void *)(unsigned long)img32->data; + + return radeon_ioctls[DRM_IOCTL_RADEON_TEXTURE].func(dev, &request, file_priv); } typedef struct drm_radeon_vertex2_32 { @@ -216,28 +190,22 @@ typedef struct drm_radeon_vertex2_32 { u32 prim; } drm_radeon_vertex2_32_t; -static int compat_radeon_cp_vertex2(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_vertex2(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_vertex2_32_t req32; - drm_radeon_vertex2_t __user *request; + drm_radeon_vertex2_32_t *req32; + drm_radeon_vertex2_t __user request; - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; + req32 = arg; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user(req32.idx, &request->idx) - || __put_user(req32.discard, &request->discard) - || __put_user(req32.nr_states, &request->nr_states) - || __put_user((void __user *)(unsigned long)req32.state, - &request->state) - || __put_user(req32.nr_prims, &request->nr_prims) - || __put_user((void __user *)(unsigned long)req32.prim, - &request->prim)) - return -EFAULT; + request.idx = req32->idx; + request.discard = req32->discard; + request.nr_states = req32->nr_states; + request.state = (drm_radeon_state_t *)(unsigned long)req32->state; + request.nr_prims = req32->nr_prims; + request.prim = (drm_radeon_prim_t *)(unsigned long)req32->prim; - return drm_ioctl(file, DRM_IOCTL_RADEON_VERTEX2, (unsigned long)request); + return radeon_ioctls[DRM_IOCTL_RADEON_VERTEX2].func(dev, &request, file_priv); } typedef struct drm_radeon_cmd_buffer32 { @@ -247,26 +215,20 @@ typedef struct drm_radeon_cmd_buffer32 { u32 boxes; } drm_radeon_cmd_buffer32_t; -static int compat_radeon_cp_cmdbuf(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_cmdbuf(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_cmd_buffer32_t req32; - drm_radeon_cmd_buffer_t __user *request; + drm_radeon_cmd_buffer32_t *req32; + drm_radeon_cmd_buffer_t __user request; - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; + req32 = arg; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user(req32.bufsz, &request->bufsz) - || __put_user((void __user *)(unsigned long)req32.buf, - &request->buf) - || __put_user(req32.nbox, &request->nbox) - || __put_user((void __user *)(unsigned long)req32.boxes, - &request->boxes)) - return -EFAULT; + request.bufsz = req32->bufsz; + request.buf = (char *)(unsigned long)req32->buf; + request.nbox = req32->nbox; + request.boxes = (struct drm_clip_rect *)(unsigned long)req32->boxes; - return drm_ioctl(file, DRM_IOCTL_RADEON_CMDBUF, (unsigned long)request); + return radeon_ioctls[DRM_IOCTL_RADEON_CMDBUF].func(dev, &request, file_priv); } typedef struct drm_radeon_getparam32 { @@ -274,23 +236,18 @@ typedef struct drm_radeon_getparam32 { u32 value; } drm_radeon_getparam32_t; -static int compat_radeon_cp_getparam(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_getparam(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_getparam32_t req32; - drm_radeon_getparam_t __user *request; + drm_radeon_getparam32_t *req32; + drm_radeon_getparam_t __user request; - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; + req32 = arg; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user(req32.param, &request->param) - || __put_user((void __user *)(unsigned long)req32.value, - &request->value)) - return -EFAULT; + request.param = req32->param; + request.value = (void *)(unsigned long)req32->value; - return drm_ioctl(file, DRM_IOCTL_RADEON_GETPARAM, (unsigned long)request); + return radeon_ioctls[DRM_IOCTL_RADEON_GETPARAM].func(dev, &request, file_priv); } typedef struct drm_radeon_mem_alloc32 { @@ -300,129 +257,71 @@ typedef struct drm_radeon_mem_alloc32 { u32 region_offset; /* offset from start of fb or GART */ } drm_radeon_mem_alloc32_t; -static int compat_radeon_mem_alloc(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_mem_alloc(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_mem_alloc32_t req32; - drm_radeon_mem_alloc_t __user *request; + drm_radeon_mem_alloc32_t *req32; + drm_radeon_mem_alloc_t __user request; - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; + req32 = arg; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user(req32.region, &request->region) - || __put_user(req32.alignment, &request->alignment) - || __put_user(req32.size, &request->size) - || __put_user((int __user *)(unsigned long)req32.region_offset, - &request->region_offset)) - return -EFAULT; + request.region = req32->region; + request.alignment = req32->alignment; + request.size = req32->size; + request.region_offset = (int *)(unsigned long)req32->region_offset; - return drm_ioctl(file, DRM_IOCTL_RADEON_ALLOC, (unsigned long)request); + return radeon_mem_alloc(dev, &request, file_priv); } typedef struct drm_radeon_irq_emit32 { u32 irq_seq; } drm_radeon_irq_emit32_t; -static int compat_radeon_irq_emit(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_irq_emit(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_irq_emit32_t req32; - drm_radeon_irq_emit_t __user *request; + drm_radeon_irq_emit32_t *req32; + drm_radeon_irq_emit_t __user request; - if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) - return -EFAULT; + req32 = arg; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user((int __user *)(unsigned long)req32.irq_seq, - &request->irq_seq)) - return -EFAULT; + request.irq_seq = (int *)(unsigned long)req32->irq_seq; - return drm_ioctl(file, DRM_IOCTL_RADEON_IRQ_EMIT, (unsigned long)request); + return radeon_irq_emit(dev, &request, file_priv); } /* The two 64-bit arches where alignof(u64)==4 in 32-bit code */ -#if defined (CONFIG_X86_64) || defined(CONFIG_IA64) typedef struct drm_radeon_setparam32 { int param; u64 value; } __attribute__((packed)) drm_radeon_setparam32_t; -static int compat_radeon_cp_setparam(struct file *file, unsigned int cmd, - unsigned long arg) +static int compat_radeon_cp_setparam(struct drm_device *dev, void *arg, + struct drm_file *file_priv) { - drm_radeon_setparam32_t req32; - drm_radeon_setparam_t __user *request; - - if (copy_from_user(&req32, (void __user *) arg, sizeof(req32))) - return -EFAULT; + drm_radeon_setparam32_t *req32; + drm_radeon_setparam_t __user request; - request = compat_alloc_user_space(sizeof(*request)); - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) - || __put_user(req32.param, &request->param) - || __put_user((void __user *)(unsigned long)req32.value, - &request->value)) - return -EFAULT; + req32 = arg; - return drm_ioctl(file, DRM_IOCTL_RADEON_SETPARAM, (unsigned long) request); -} -#else -#define compat_radeon_cp_setparam NULL -#endif /* X86_64 || IA64 */ - -static drm_ioctl_compat_t *radeon_compat_ioctls[] = { - [DRM_RADEON_CP_INIT] = compat_radeon_cp_init, - [DRM_RADEON_CLEAR] = compat_radeon_cp_clear, - [DRM_RADEON_STIPPLE] = compat_radeon_cp_stipple, - [DRM_RADEON_TEXTURE] = compat_radeon_cp_texture, - [DRM_RADEON_VERTEX2] = compat_radeon_cp_vertex2, - [DRM_RADEON_CMDBUF] = compat_radeon_cp_cmdbuf, - [DRM_RADEON_GETPARAM] = compat_radeon_cp_getparam, - [DRM_RADEON_SETPARAM] = compat_radeon_cp_setparam, - [DRM_RADEON_ALLOC] = compat_radeon_mem_alloc, - [DRM_RADEON_IRQ_EMIT] = compat_radeon_irq_emit, + request.param = req32->param; + request.value = req32->value; + + return radeon_ioctls[DRM_IOCTL_RADEON_SETPARAM].func(dev, &request, file_priv); +} + +struct drm_ioctl_desc radeon_compat_ioctls[] = { + DRM_IOCTL_DEF(DRM_RADEON_CP_INIT, compat_radeon_cp_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF(DRM_RADEON_CLEAR, compat_radeon_cp_clear, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_STIPPLE, compat_radeon_cp_stipple, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_TEXTURE, compat_radeon_cp_texture, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_VERTEX2, compat_radeon_cp_vertex2, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_CMDBUF, compat_radeon_cp_cmdbuf, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_GETPARAM, compat_radeon_cp_getparam, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_SETPARAM, compat_radeon_cp_setparam, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_ALLOC, compat_radeon_mem_alloc, DRM_AUTH), + DRM_IOCTL_DEF(DRM_RADEON_IRQ_EMIT, compat_radeon_irq_emit, DRM_AUTH) }; +int radeon_num_compat_ioctls = DRM_ARRAY_SIZE(radeon_compat_ioctls); -/** - * Called whenever a 32-bit process running under a 64-bit kernel - * performs an ioctl on /dev/dri/card<n>. - * - * \param filp file pointer. - * \param cmd command. - * \param arg user argument. - * \return zero on success or negative number on failure. - */ -long radeon_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) -{ - unsigned int nr = DRM_IOCTL_NR(cmd); - drm_ioctl_compat_t *fn = NULL; - int ret; - - if (nr < DRM_COMMAND_BASE) - return drm_compat_ioctl(filp, cmd, arg); - - if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(radeon_compat_ioctls)) - fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE]; - - if (fn != NULL) - ret = (*fn) (filp, cmd, arg); - else - ret = drm_ioctl(filp, cmd, arg); - - return ret; -} - -long radeon_kms_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) -{ - unsigned int nr = DRM_IOCTL_NR(cmd); - int ret; - - if (nr < DRM_COMMAND_BASE) - return drm_compat_ioctl(filp, cmd, arg); - - ret = drm_ioctl(filp, cmd, arg); - - return ret; -} +#endif Modified: projects/random_number_generator/sys/fs/msdosfs/msdosfs_vnops.c ============================================================================== --- projects/random_number_generator/sys/fs/msdosfs/msdosfs_vnops.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/fs/msdosfs/msdosfs_vnops.c Sat May 3 17:39:03 2014 (r265282) @@ -1240,6 +1240,17 @@ abortit: VOP_UNLOCK(fvp, 0); goto bad; } + /* + * If ip is for a directory, then its name should always + * be "." since it is for the directory entry in the + * directory itself (msdosfs_lookup() always translates + * to the "." entry so as to get a unique denode, except + * for the root directory there are different + * complications). However, we just corrupted its name + * to pass the correct name to createde(). Undo this. + */ + if ((ip->de_Attributes & ATTR_DIRECTORY) != 0) + bcopy(oldname, ip->de_Name, 11); ip->de_refcnt++; zp->de_fndoffset = from_diroffset; error = removede(zp, ip); Modified: projects/random_number_generator/sys/modules/drm2/radeonkms/Makefile ============================================================================== --- projects/random_number_generator/sys/modules/drm2/radeonkms/Makefile Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/modules/drm2/radeonkms/Makefile Sat May 3 17:39:03 2014 (r265282) @@ -88,7 +88,10 @@ SRCS += \ si.c \ si_blit_shaders.c -#radeon_ioc32.c +.if ${MACHINE_CPUARCH} == "amd64" +SRCS += radeon_ioc32.c +.endif + #radeon_prime.c #--radeon_trace_points.c Modified: projects/random_number_generator/sys/net/route.c ============================================================================== --- projects/random_number_generator/sys/net/route.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/net/route.c Sat May 3 17:39:03 2014 (r265282) @@ -402,15 +402,6 @@ rtalloc1_fib(struct sockaddr *dst, int r int needlock; KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum")); - switch (dst->sa_family) { - case AF_INET6: - case AF_INET: - /* We support multiple FIBs. */ - break; - default: - fibnum = RT_DEFAULT_FIB; - break; - } rnh = rt_tables_get_rnh(fibnum, dst->sa_family); newrt = NULL; if (rnh == NULL) @@ -898,7 +889,7 @@ rt_getifa_fib(struct rt_addrinfo *info, * The route must be locked. */ int -rtexpunge(struct rtentry *rt) +rt_expunge(struct radix_node_head *rnh, struct rtentry *rt) { #if !defined(RADIX_MPATH) struct radix_node *rn; @@ -907,17 +898,10 @@ rtexpunge(struct rtentry *rt) int fib; struct rtentry *rt0; #endif - struct radix_node_head *rnh; struct ifaddr *ifa; int error = 0; - /* - * Find the correct routing tree to use for this Address Family - */ - rnh = rt_tables_get_rnh(rt->rt_fibnum, rt_key(rt)->sa_family); RT_LOCK_ASSERT(rt); - if (rnh == NULL) - return (EAFNOSUPPORT); RADIX_NODE_HEAD_LOCK_ASSERT(rnh); #ifdef RADIX_MPATH Modified: projects/random_number_generator/sys/net/route.h ============================================================================== --- projects/random_number_generator/sys/net/route.h Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/net/route.h Sat May 3 17:39:03 2014 (r265282) @@ -371,7 +371,7 @@ int rtsock_routemsg(int, struct ifnet *i * RTFREE() uses an unlocked entry. */ -int rtexpunge(struct rtentry *); +int rt_expunge(struct radix_node_head *, struct rtentry *); void rtfree(struct rtentry *); int rt_check(struct rtentry **, struct rtentry **, struct sockaddr *); Modified: projects/random_number_generator/sys/netinet/in_rmx.c ============================================================================== --- projects/random_number_generator/sys/netinet/in_rmx.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/netinet/in_rmx.c Sat May 3 17:39:03 2014 (r265282) @@ -169,9 +169,8 @@ in_clsroute(struct radix_node *rn, struc if (V_rtq_reallyold != 0) { rt->rt_flags |= RTPRF_OURS; rt->rt_expire = time_uptime + V_rtq_reallyold; - } else { - rtexpunge(rt); - } + } else + rt_expunge(head, rt); } struct rtqk_arg { @@ -388,6 +387,7 @@ in_detachhead(void **head, int off) * plug back in. */ struct in_ifadown_arg { + struct radix_node_head *rnh; struct ifaddr *ifa; int del; }; @@ -411,7 +411,7 @@ in_ifadownkill(struct radix_node *rn, vo * Disconnect it from the tree and permit protocols * to cleanup. */ - rtexpunge(rt); + rt_expunge(ap->rnh, rt); /* * At this point it is an rttrash node, and in case * the above is the only reference we must free it. Modified: projects/random_number_generator/sys/netinet6/in6_ifattach.c ============================================================================== --- projects/random_number_generator/sys/netinet6/in6_ifattach.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/sys/netinet6/in6_ifattach.c Sat May 3 17:39:03 2014 (r265282) @@ -863,7 +863,7 @@ in6_ifdetach(struct ifnet *ifp) RT_DEFAULT_FIB); if (rt) { if (rt->rt_ifp == ifp) - rtexpunge(rt); + rt_expunge(rnh, rt); RTFREE_LOCKED(rt); } RADIX_NODE_HEAD_UNLOCK(rnh); Modified: projects/random_number_generator/tools/tools/nanobsd/nanobsd.sh ============================================================================== --- projects/random_number_generator/tools/tools/nanobsd/nanobsd.sh Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/tools/tools/nanobsd/nanobsd.sh Sat May 3 17:39:03 2014 (r265282) @@ -233,7 +233,7 @@ build_kernel ( ) ( ( if [ -f ${NANO_KERNEL} ] ; then - extra="KERNCONFDIR=$(realpath $(dirname ${NANO_KERNEL}))" + kernconfdir_arg="KERNCONFDIR='$(realpath $(dirname ${NANO_KERNEL}))'" kernconf=$(basename ${NANO_KERNEL}) else kernconf=${NANO_KERNEL} @@ -245,10 +245,10 @@ build_kernel ( ) ( unset TARGET_CPUTYPE # Note: We intentionally build all modules, not only the ones in # NANO_MODULES so the built world can be reused by multiple images. - env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} buildkernel \ - SRCCONF=${SRCCONF} \ - ${extra} __MAKE_CONF=${NANO_MAKE_CONF_BUILD} \ - KERNCONF=${kernconf} + eval "TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} buildkernel \ + SRCCONF='${SRCCONF}' \ + __MAKE_CONF='${NANO_MAKE_CONF_BUILD}' \ + ${kernconfdir_arg} KERNCONF=${kernconf}" ) > ${MAKEOBJDIRPREFIX}/_.bk 2>&1 ) @@ -315,19 +315,19 @@ install_kernel ( ) ( ( if [ -f ${NANO_KERNEL} ] ; then - extra="KERNCONFDIR=$(realpath $(dirname ${NANO_KERNEL}))" + kernconfdir_arg="KERNCONFDIR='$(realpath $(dirname ${NANO_KERNEL}))'" kernconf=$(basename ${NANO_KERNEL}) else kernconf=${NANO_KERNEL} fi cd ${NANO_SRC} - env TARGET_ARCH=${NANO_ARCH} ${NANO_MAKE} installkernel \ - DESTDIR=${NANO_WORLDDIR} \ - SRCCONF=${SRCCONF} \ - ${extra} __MAKE_CONF=${NANO_MAKE_CONF_INSTALL} \ - KERNCONF=${kernconf} \ - MODULES_OVERRIDE="${NANO_MODULES}" + eval "TARGET_ARCH=${NANO_ARCH} ${NANO_MAKE} installkernel \ + DESTDIR='${NANO_WORLDDIR}' \ + SRCCONF='${SRCCONF}' \ + __MAKE_CONF='${NANO_MAKE_CONF_INSTALL}' \ + ${kernconfdir_arg} KERNCONF=${kernconf} \ + MODULES_OVERRIDE='${NANO_MODULES}'" ) > ${NANO_OBJ}/_.ik 2>&1 ) Modified: projects/random_number_generator/usr.bin/ssh-copy-id/ssh-copy-id.sh ============================================================================== --- projects/random_number_generator/usr.bin/ssh-copy-id/ssh-copy-id.sh Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/usr.bin/ssh-copy-id/ssh-copy-id.sh Sat May 3 17:39:03 2014 (r265282) @@ -45,7 +45,7 @@ sendkey() { if ! grep -sqwF "$key" "$keyfile"; then \ printf "$alg $key $comment\n" >> "$keyfile" ; \ fi ; \ - done \ + done ; \ if [ -x /sbin/restorecon ]; then \ /sbin/restorecon -F "$HOME/.ssh/" "$keyfile" >/dev/null 2>&1 || true ; \ fi Modified: projects/random_number_generator/usr.bin/top/machine.c ============================================================================== --- projects/random_number_generator/usr.bin/top/machine.c Sat May 3 17:33:30 2014 (r265281) +++ projects/random_number_generator/usr.bin/top/machine.c Sat May 3 17:39:03 2014 (r265282) @@ -67,6 +67,9 @@ static int namelength = TOP_USERNAME_LEN #else static int namelength = 8; #endif +/* TOP_JID_LEN based on max of 999999 */ +#define TOP_JID_LEN 7 +static int jidlength; static int cmdlengthdelta; /* Prototypes for top internals */ @@ -101,26 +104,26 @@ struct handle { */ static char io_header[] = - " PID%s %-*.*s VCSW IVCSW READ WRITE FAULT TOTAL PERCENT COMMAND"; + " PID%*s %-*.*s VCSW IVCSW READ WRITE FAULT TOTAL PERCENT COMMAND"; #define io_Proc_format \ - "%5d%s %-*.*s %6ld %6ld %6ld %6ld %6ld %6ld %6.2f%% %.*s" + "%5d%*s %-*.*s %6ld %6ld %6ld %6ld %6ld %6ld %6.2f%% %.*s" static char smp_header_thr[] = - " PID%s %-*.*s THR PRI NICE SIZE RES STATE C TIME %7s COMMAND"; + " PID%*s %-*.*s THR PRI NICE SIZE RES STATE C TIME %7s COMMAND"; static char smp_header[] = - " PID%s %-*.*s " "PRI NICE SIZE RES STATE C TIME %7s COMMAND"; + " PID%*s %-*.*s " "PRI NICE SIZE RES STATE C TIME %7s COMMAND"; #define smp_Proc_format \ - "%5d%s %-*.*s %s%3d %4s%7s %6s %-6.6s %2d%7s %6.2f%% %.*s" + "%5d%*s %-*.*s %s%3d %4s%7s %6s %-6.6s %2d%7s %6.2f%% %.*s" static char up_header_thr[] = - " PID%s %-*.*s THR PRI NICE SIZE RES STATE TIME %7s COMMAND"; + " PID%*s %-*.*s THR PRI NICE SIZE RES STATE TIME %7s COMMAND"; static char up_header[] = - " PID%s %-*.*s " "PRI NICE SIZE RES STATE TIME %7s COMMAND"; + " PID%*s %-*.*s " "PRI NICE SIZE RES STATE TIME %7s COMMAND"; #define up_Proc_format \ - "%5d%s %-*.*s %s%3d %4s%7s %6s %-6.6s%.0d%7s %6.2f%% %.*s" + "%5d%*s %-*.*s %s%3d %4s%7s %6s %-6.6s%.0d%7s %6.2f%% %.*s" /* process state names for the "STATE" column of the display */ @@ -393,6 +396,11 @@ format_header(char *uname_field) { static char Header[128]; const char *prehead; + + if (ps.jail) + jidlength = TOP_JID_LEN + 1; /* +1 for extra left space. */ + else + jidlength = 0; switch (displaymode) { case DISP_CPU: @@ -406,14 +414,14 @@ format_header(char *uname_field) (ps.thread ? smp_header : smp_header_thr) : (ps.thread ? up_header : up_header_thr); snprintf(Header, sizeof(Header), prehead, - ps.jail ? " JID" : "", + jidlength, ps.jail ? " JID" : "", namelength, namelength, uname_field, ps.wcpu ? "WCPU" : "CPU"); break; case DISP_IO: prehead = io_header; snprintf(Header, sizeof(Header), prehead, - ps.jail ? " JID" : "", + jidlength, ps.jail ? " JID" : "", namelength, namelength, uname_field); break; } @@ -806,7 +814,7 @@ format_next_process(caddr_t handle, char int cpu, state; struct rusage ru, *rup; long p_tot, s_tot; - char *proc_fmt, thr_buf[6], jid_buf[6]; + char *proc_fmt, thr_buf[6], jid_buf[TOP_JID_LEN + 1]; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405031739.s43Hd4Xe074317>