-static long readdir_handle_ctor(struct readdir_handle_s *rhandle, void *buf,
- size_t size)
-{
- long ret;
-
- if (buf == NULL) {
- gossip_err
- ("Invalid NULL buffer specified in readdir_handle_ctor\n");
- return -ENOMEM;
- }
- rhandle->dents_buf = buf;
- ret = decode_dirents(buf, size, &rhandle->readdir_response);
- if (ret < 0) {
- gossip_err("Could not decode readdir from buffer %ld\n", ret);
- gossip_debug(GOSSIP_DIR_DEBUG, "vfree %p\n", buf);
- vfree(buf);
- rhandle->dents_buf = NULL;
- }
- return ret;
-}
-
-static void readdir_handle_dtor(struct readdir_handle_s *rhandle)
-{
- if (rhandle == NULL)
- return;
-
- /* kfree(NULL) is safe */
- kfree(rhandle->readdir_response.dirent_array);
- rhandle->readdir_response.dirent_array = NULL;
-
- if (rhandle->dents_buf) {
- gossip_debug(GOSSIP_DIR_DEBUG, "vfree %p\n",
- rhandle->dents_buf);
- vfree(rhandle->dents_buf);
- rhandle->dents_buf = NULL;
- }
-}
-