Source-Changes-HG archive

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

[src/trunk]: src/sys/dev Backout the last two revisions because the cause pan...



details:   https://anonhg.NetBSD.org/src/rev/3a7382587c66
branches:  trunk
changeset: 748917:3a7382587c66
user:      tron <tron%NetBSD.org@localhost>
date:      Tue Nov 10 16:49:53 2009 +0000

description:
Backout the last two revisions because the cause panic on LOCKDEBUG
kernels. Problem reported by David Young.

diffstat:

 sys/dev/cgd.c |  26 ++++++++++----------------
 1 files changed, 10 insertions(+), 16 deletions(-)

diffs (80 lines):

diff -r 76d3cf8f48b8 -r 3a7382587c66 sys/dev/cgd.c
--- a/sys/dev/cgd.c     Tue Nov 10 15:06:06 2009 +0000
+++ b/sys/dev/cgd.c     Tue Nov 10 16:49:53 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cgd.c,v 1.60 2009/09/11 13:36:37 tron Exp $ */
+/* $NetBSD: cgd.c,v 1.61 2009/11/10 16:49:53 tron Exp $ */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.60 2009/09/11 13:36:37 tron Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.61 2009/11/10 16:49:53 tron Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -775,13 +775,9 @@
        struct iovec    dstiov[2];
        struct iovec    srciov[2];
        size_t          blocksize = cs->sc_cdata.cf_blocksize;
-       char            *sink;
-       char            *zero_iv;
-       char            *blkno_buf;
-
-       sink = malloc(blocksize * 3, M_DEVBUF, M_WAITOK);
-       zero_iv = &sink[blocksize];
-       blkno_buf = &zero_iv[blocksize];
+       char            sink[blocksize];
+       char            zero_iv[blocksize];
+       char            blkno_buf[blocksize];
 
        DPRINTF_FOLLOW(("cgd_cipher() dir=%d\n", dir));
 
@@ -792,7 +788,7 @@
        DIAGCONDPANIC(sizeof(daddr_t) > blocksize,
            ("cgd_cipher: sizeof(daddr_t) > blocksize"));
 
-       memset(zero_iv, 0x0, blocksize);
+       memset(zero_iv, 0x0, sizeof(zero_iv));
 
        dstuio.uio_iov = dstiov;
        dstuio.uio_iovcnt = 2;
@@ -811,13 +807,13 @@
                dstiov[1].iov_base = dst;
                srciov[1].iov_base = src;
 
-               memset(blkno_buf, 0x0, blocksize);
+               memset(blkno_buf, 0x0, sizeof(blkno_buf));
                blkno2blkno_buf(blkno_buf, blkno);
                if (dir == CGD_CIPHER_DECRYPT) {
                        dstuio.uio_iovcnt = 1;
                        srcuio.uio_iovcnt = 1;
                        IFDEBUG(CGDB_CRYPTO, hexprint("step 0: blkno_buf",
-                           blkno_buf, blocksize));
+                           blkno_buf, sizeof(blkno_buf)));
                        cipher(cs->sc_cdata.cf_priv, &dstuio, &srcuio,
                            zero_iv, CGD_CIPHER_ENCRYPT);
                        memcpy(blkno_buf, sink, blocksize);
@@ -826,17 +822,15 @@
                }
 
                IFDEBUG(CGDB_CRYPTO, hexprint("step 1: blkno_buf",
-                   blkno_buf, blocksize));
+                   blkno_buf, sizeof(blkno_buf)));
                cipher(cs->sc_cdata.cf_priv, &dstuio, &srcuio, zero_iv, dir);
                IFDEBUG(CGDB_CRYPTO, hexprint("step 2: sink",
-                   sink, blocksize));
+                   sink, sizeof(sink)));
 
                dst += secsize;
                src += secsize;
                blkno++;
        }
-
-       free(sink, M_DEVBUF);
 }
 
 #ifdef DEBUG



Home | Main Index | Thread Index | Old Index