diff
- cmd_buf = memdup_user(buffer, count + 1);
- if (IS_ERR(cmd_buf))
-     return -ENOMEM;
+ char cmd_buf[256];
+ size_t copy_size = min_t(size_t, count, sizeof(cmd_buf) - 1);
+ if (copy_from_user(cmd_buf, buffer, copy_size))
+     return -EFAULT;
+ cmd_buf[copy_size] = '\0';
  // ... rest of the code ...
- kfree(cmd_buf_tmp);
