long_len = 128;
        }
 
-       tmp_size = ((mod_len <= 128) ? TYPE50_CRB1_LEN : TYPE50_CRB2_LEN) +
+       tmp_size = ((long_len <= 64) ? TYPE50_CRB1_LEN : TYPE50_CRB2_LEN) +
                    CALLER_HEADER;
 
        memset(z90cMsg_p, 0, tmp_size);
 
        if (reply_code)
                switch (reply_code) {
+               case REP82_ERROR_MACHINE_FAILURE:
+                       if (errh_p->type == TYPE82_RSP_CODE)
+                               PRINTKW("Machine check failure\n");
+                       else
+                               PRINTKW("Module failure\n");
+                       return REC_HARDWAR_ERR;
                case REP82_ERROR_OPERAND_INVALID:
+                       return REC_OPERAND_INV;
                case REP88_ERROR_MESSAGE_MALFORMD:
+                       PRINTKW("Message malformed\n");
                        return REC_OPERAND_INV;
                case REP82_ERROR_OPERAND_SIZE:
                        return REC_OPERAND_SIZE;
 
 /*
  *  linux/drivers/s390/crypto/z90main.c
  *
- *  z90crypt 1.3.2
+ *  z90crypt 1.3.3
  *
- *  Copyright (C)  2001, 2004 IBM Corporation
+ *  Copyright (C)  2001, 2005 IBM Corporation
  *  Author(s): Robert Burroughs (burrough@us.ibm.com)
  *             Eric Rossman (edrossma@us.ibm.com)
  *
  * PCIXCC_MCL2   512-2048     ----- (applying any GA LIC will make an MCL3 card)
  * PCIXCC_MCL3   -----        128-2048
  * CEX2C         512-2048     128-2048
+ * CEX2A          ??-2048     same (the lower limit is less than 128 bit...)
  *
  * ext_bitlens (extended bitlengths) is a global, since you should not apply an
  * MCL to just one card in a machine. We assume, at first, that all cards have