/* Data records */
 static unsigned int ns3data;
-static struct s3datarec s3data[S3DATA_MAX];
+static struct s3datarec *s3data;
 
 /* Plug records */
 static unsigned int ns3plug;
 
        /* Initialize the data structures */
        ns3data = 0;
-       memset(s3data, 0, sizeof(s3data));
+       s3data = kcalloc(S3DATA_MAX, sizeof(*s3data), GFP_KERNEL);
+       if (!s3data) {
+               result = -ENOMEM;
+               goto out;
+       }
+
        ns3plug = 0;
        memset(s3plug, 0, sizeof(s3plug));
        ns3crc = 0;
 static void free_srecs(void)
 {
        ns3data = 0;
-       memset(s3data, 0, sizeof(s3data));
+       kfree(s3data);
        ns3plug = 0;
        memset(s3plug, 0, sizeof(s3plug));
        ns3crc = 0;