ret = r;
                                continue;
                        }
+                       if (option < 4096) {
+                               p9_debug(P9_DEBUG_ERROR,
+                                        "msize should be at least 4k\n");
+                               ret = -EINVAL;
+                               continue;
+                       }
                        clnt->msize = option;
                        break;
                case Opt_trans:
        else if (!strncmp(version, "9P2000", 6))
                c->proto_version = p9_proto_legacy;
        else {
+               p9_debug(P9_DEBUG_ERROR,
+                        "server returned an unknown version: %s\n", version);
                err = -EREMOTEIO;
                goto error;
        }
 
+       if (msize < 4096) {
+               p9_debug(P9_DEBUG_ERROR,
+                        "server returned a msize < 4096: %d\n", msize);
+               err = -EREMOTEIO;
+               goto error;
+       }
        if (msize < c->msize)
                c->msize = msize;
 
        if (clnt->msize > clnt->trans_mod->maxsize)
                clnt->msize = clnt->trans_mod->maxsize;
 
+       if (clnt->msize < 4096) {
+               p9_debug(P9_DEBUG_ERROR,
+                        "Please specify a msize of at least 4k\n");
+               err = -EINVAL;
+               goto free_client;
+       }
+
        err = p9_client_version(clnt);
        if (err)
                goto close_trans;