Catch negative FDs
[akaros.git] / kern / src / frontend.c
index 17e5c17..970f22d 100644 (file)
@@ -39,97 +39,6 @@ frontend_proc_free(struct proc *SAFE p)
 #endif
 }
 
-void* user_memdup(struct proc* p, const void* va, int len)
-{
-       void* kva = NULL;
-       if(len < 0 || (kva = kmalloc(len,0)) == NULL)
-               return ERR_PTR(-ENOMEM);
-       if(memcpy_from_user(p,kva,va,len))
-       {
-               kfree(kva);
-               return ERR_PTR(-EINVAL);
-       }
-
-       return kva;
-}
-
-void* user_memdup_errno(struct proc* p, const void* va, int len)
-{
-       void* kva = user_memdup(p,va,len);
-       if(IS_ERR(kva))
-       {
-               set_errno(current_tf,-PTR_ERR(kva));
-               return NULL;
-       }
-       return kva;
-}
-
-void user_memdup_free(struct proc* p, void* va)
-{
-       kfree(va);
-}
-
-char* user_strdup(struct proc* p, const char* va0, int max)
-{
-       max++;
-       char* kbuf = (char*)kmalloc(PGSIZE,0);
-       if(kbuf == NULL)
-               return ERR_PTR(-ENOMEM);
-
-       int pos = 0, len = 0;
-       const char* va = va0;
-       while(max > 0 && len == 0)
-       {
-               int thislen = MIN(PGSIZE-(uintptr_t)va%PGSIZE,max);
-               if(memcpy_from_user(p,kbuf,va,thislen))
-               {
-                       kfree(kbuf);
-                       return ERR_PTR(-EINVAL);
-               }
-
-               const char* nullterm = memchr(kbuf,0,thislen);
-               if(nullterm)
-                       len = pos+(nullterm-kbuf)+1;
-
-               pos += thislen;
-               va += thislen;
-               max -= thislen;
-       }
-
-       kfree(kbuf);
-       return len ? user_memdup(p,va0,len) : ERR_PTR(-EINVAL);
-}
-
-char* user_strdup_errno(struct proc* p, const char* va, int max)
-{
-       void* kva = user_strdup(p,va,max);
-       if(IS_ERR(kva))
-       {
-               set_errno(current_tf,-PTR_ERR(kva));
-               return NULL;
-       }
-       return kva;
-}
-
-int memcpy_to_user_errno(struct proc* p, void* dst, const void* src,
-                                int len)
-{
-       if(memcpy_to_user(p,dst,src,len))
-       {
-               set_errno(current_tf,EINVAL);
-               return -1;
-       }
-       return 0;
-}
-
-void* kmalloc_errno(int len)
-{
-       void* kva = NULL;
-       if(len < 0 || (kva = kmalloc(len,0)) == NULL)
-               set_errno(current_tf,ENOMEM);
-       return kva;
-}
-
 struct kmem_cache* struct_file_cache;
 void file_init()
 {