Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-6-0]: src/sys/compat/freebsd Pull up following revision(s) (reque...



details:   https://anonhg.NetBSD.org/src/rev/5798b54e6239
branches:  netbsd-6-0
changeset: 774955:5798b54e6239
user:      msaitoh <msaitoh%NetBSD.org@localhost>
date:      Thu Jun 26 04:01:32 2014 +0000

description:
Pull up following revision(s) (requested by maxv in ticket #1086):
        sys/compat/freebsd/freebsd_sched.c      1.20-1.21

Avoid NULL dereference and fix sched param conversion (at least make it
do something). Pointed out by Maxime Villard.

Simplify and clarify.

diffstat:

 sys/compat/freebsd/freebsd_sched.c |  60 +++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 30 deletions(-)

diffs (127 lines):

diff -r 9b8e9eab5cd5 -r 5798b54e6239 sys/compat/freebsd/freebsd_sched.c
--- a/sys/compat/freebsd/freebsd_sched.c        Wed Jun 18 09:35:59 2014 +0000
+++ b/sys/compat/freebsd/freebsd_sched.c        Thu Jun 26 04:01:32 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: freebsd_sched.c,v 1.19 2008/04/28 20:23:41 martin Exp $        */
+/*     $NetBSD: freebsd_sched.c,v 1.19.46.1 2014/06/26 04:01:32 msaitoh Exp $  */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: freebsd_sched.c,v 1.19 2008/04/28 20:23:41 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: freebsd_sched.c,v 1.19.46.1 2014/06/26 04:01:32 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/mount.h>
@@ -62,72 +62,72 @@
  */
 static int
 sched_freebsd2native(int freebsd_policy,
-    struct freebsd_sched_param *freebsd_params, int *native_policy,
+    const struct freebsd_sched_param *freebsd_params, int *native_policy,
     struct sched_param *native_params)
 {
-       int error;
-
-       error = 0;
+       int p;
 
        switch (freebsd_policy) {
        case FREEBSD_SCHED_OTHER:
-               *native_policy = SCHED_OTHER;
+               p = SCHED_OTHER;
                break;
 
        case FREEBSD_SCHED_FIFO:
-               *native_policy = SCHED_FIFO;
+               p = SCHED_FIFO;
                break;
         
        case FREEBSD_SCHED_RR:
-               *native_policy = SCHED_RR;
+               p = SCHED_RR;
                break;
 
        default:
-               error = EINVAL;
-               break;
+               return EINVAL;
        }
  
-       if (freebsd_params != NULL && native_params != NULL && !error) {
-               native_params = (struct sched_param *)freebsd_params;
+       if (native_policy != NULL)
+               *native_policy = p;
+
+       if (freebsd_params != NULL && native_params != NULL) {
+               /* XXX: Needs adjustment to do a proper conversion. */
+               native_params->sched_priority = freebsd_params->sched_priority;
        }
-        
-       return (error);
+       return 0;
 }
 
 /*
- * XXX: Needs adjustment to do a proper conversion.
  */
 static int
-sched_native2freebsd(int native_policy, struct sched_param *native_params,
+sched_native2freebsd(int native_policy, const struct sched_param *native_params,
     int *freebsd_policy, struct freebsd_sched_param *freebsd_params)
 {
-       int error;
-
-       error = 0;
+       int p;
 
        switch (native_policy) {
        case SCHED_OTHER:
-               *freebsd_policy = FREEBSD_SCHED_OTHER;
+               p = FREEBSD_SCHED_OTHER;
                break;
 
        case SCHED_FIFO:
-               *freebsd_policy = FREEBSD_SCHED_FIFO;
+               p = FREEBSD_SCHED_FIFO;
                break;
         
        case SCHED_RR:
-               *freebsd_policy = FREEBSD_SCHED_RR;
+               p = FREEBSD_SCHED_RR;
                break;
 
        default:
-               error = EINVAL;
-               break;
+               return EINVAL;
        }
  
-       if (native_params != NULL && freebsd_params != NULL && !error) {
-               freebsd_params = (struct freebsd_sched_param *)native_params;
+       if (freebsd_policy != NULL)
+               *freebsd_policy = p;
+
+       if (native_params != NULL && freebsd_params != NULL) {
+               /* XXX: Needs adjustment to do a proper conversion. */
+               freebsd_params->sched_priority = native_params->sched_priority;
        }
-        
-       return (error);
+
+       return 0;
 }
 
 int
@@ -199,7 +199,7 @@
                goto out;
 
  out:
-       return (error);
+       return error;
 }
 
 int



Home | Main Index | Thread Index | Old Index