gru: copyright fixes
[linux-2.6.git] / drivers / misc / sgi-gru / grukdump.c
index 7b1bdf3..55eabfa 100644 (file)
@@ -3,11 +3,21 @@
  *
  *            Dump GRU State
  *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
+ *  Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
  *
- * Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  */
 
 #include <linux/kernel.h>
@@ -26,7 +36,7 @@
 
 static int gru_user_copy_handle(void __user **dp, void *s)
 {
-       if (copy_to_user(dp, s, GRU_HANDLE_BYTES))
+       if (copy_to_user(*dp, s, GRU_HANDLE_BYTES))
                return -1;
        *dp += GRU_HANDLE_BYTES;
        return 0;
@@ -109,7 +119,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
 {
        struct gru_dump_context_header hdr;
        struct gru_dump_context_header __user *uhdr = ubuf;
-       struct gru_context_configuration_handle *cch;
+       struct gru_context_configuration_handle *cch, *ubufcch;
        struct gru_thread_state *gts;
        int try, cch_locked, cbrcnt = 0, dsrcnt = 0, bytes = 0, ret = 0;
        void *grubase;
@@ -125,8 +135,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
        }
 
        ubuf += sizeof(hdr);
+       ubufcch = ubuf;
        if (gru_user_copy_handle(&ubuf, cch))
                goto fail;
+       if (cch_locked)
+               ubufcch->delresp = 0;
        bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;
 
        if (cch_locked || !lock_cch) {
@@ -155,6 +168,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
                return ret;
 
        hdr.magic = GRU_DUMP_MAGIC;
+       hdr.gid = gru->gs_gid;
        hdr.ctxnum = ctxnum;
        hdr.cbrcnt = cbrcnt;
        hdr.dsrcnt = dsrcnt;