Date: Mon, 11 Jun 2012 15:04:34 +0000 From: vbotton@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r237468 - soc2012/vbotton/ntfs_apple Message-ID: <20120611150434.D219F106574E@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: vbotton Date: Mon Jun 11 15:04:34 2012 New Revision: 237468 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=237468 Log: Endianness function, and first allocation changed Modified: soc2012/vbotton/ntfs_apple/ntfs_dir.c soc2012/vbotton/ntfs_apple/ntfs_index.h soc2012/vbotton/ntfs_apple/ntfs_inode.h soc2012/vbotton/ntfs_apple/ntfs_types.h Modified: soc2012/vbotton/ntfs_apple/ntfs_dir.c ============================================================================== --- soc2012/vbotton/ntfs_apple/ntfs_dir.c Mon Jun 11 14:02:02 2012 (r237467) +++ soc2012/vbotton/ntfs_apple/ntfs_dir.c Mon Jun 11 15:04:34 2012 (r237468) @@ -168,10 +168,10 @@ * ntfs_index_inode_read()). */ ir = (INDEX_ROOT*)((u8*)ctx->a + le16toh(ctx->a->value_offset)); - index_end = (u8*)&ir->index + le32_to_cpu(ir->index.index_length); + index_end = (u8*)&ir->index + le32toh(ir->index.index_length); /* The first index entry. */ ie = (INDEX_ENTRY*)((u8*)&ir->index + - le32_to_cpu(ir->index.entries_offset)); + le32toh(ir->index.entries_offset)); /* * Loop until we exceed valid memory (corruption case) or until we * reach the last entry. @@ -220,9 +220,8 @@ u8 len; if (!name) { - *res_name = name = OSMalloc( - sizeof(*name), - ntfs_malloc_tag); + *res_name = name = malloc( + sizeof(*name)); if (!name) { err = ENOMEM; goto put_err; @@ -236,8 +235,7 @@ len * sizeof(ntfschar)); } else { if (name) - OSFree(name, sizeof(*name), - ntfs_malloc_tag); + free(name); *res_name = NULL; } *res_mref = le64toh(ie->indexed_file); @@ -271,9 +269,8 @@ u8 len; if (!name) { - *res_name = name = OSMalloc( - sizeof(*name), - ntfs_malloc_tag); + *res_name = name = malloc( + sizeof(*name)); if (!name) { err = ENOMEM; goto put_err; @@ -347,7 +344,7 @@ goto put_err; } /* Get the starting vcn of the index block holding the child node. */ - vcn = sle64tohp((sle64*)((u8*)ie + le16toh(ie->length) - 8)); + vcn = le64toh(*(sle64*)((u8*)ie + le16toh(ie->length) - 8)); /* * We are done with the index root and the mft record. Release them, * otherwise we deadlock with ntfs_page_map(). @@ -398,7 +395,7 @@ goto page_err; } if (offsetof(INDEX_BLOCK, index) + - le32_to_cpu(ia->index.allocated_size) != + le32toh(ia->index.allocated_size) != ia_ni->block_size) { ntfs_error(mp, "Index buffer (VCN 0x%llx) of directory inode " "0x%llx has a size (%u) differing from the " @@ -407,7 +404,7 @@ (unsigned long long)vcn, (unsigned long long)dir_ni->mft_no, (unsigned) (offsetof(INDEX_BLOCK, index) + - le32_to_cpu(ia->index.allocated_size)), + le32toh(ia->index.allocated_size)), (unsigned)ia_ni->block_size); goto page_err; } @@ -420,7 +417,7 @@ (unsigned long long)dir_ni->mft_no); goto page_err; } - index_end = (u8*)&ia->index + le32_to_cpu(ia->index.index_length); + index_end = (u8*)&ia->index + le32toh(ia->index.index_length); if (index_end > (u8*)ia + ia_ni->block_size) { ntfs_error(mp, "Size of index buffer (VCN 0x%llx) of directory " "inode 0x%llx exceeds maximum size.", @@ -430,7 +427,7 @@ } /* The first index entry. */ ie = (INDEX_ENTRY*)((u8*)&ia->index + - le32_to_cpu(ia->index.entries_offset)); + le32toh(ia->index.entries_offset)); /* * Iterate similar to above big loop but applied to index buffer, thus * loop until we exceed valid memory (corruption case) or until we @@ -482,9 +479,8 @@ u8 len; if (!name) { - *res_name = name = OSMalloc( - sizeof(*name), - ntfs_malloc_tag); + *res_name = name = malloc( + sizeof(*name)); if (!name) { err = ENOMEM; goto page_err; @@ -498,8 +494,7 @@ len * sizeof(ntfschar)); } else { if (name) - OSFree(name, sizeof(*name), - ntfs_malloc_tag); + free(name); *res_name = NULL; } *res_mref = le64toh(ie->indexed_file); @@ -1582,10 +1577,10 @@ * ntfs_inode_read()). */ ir = (INDEX_ROOT*)((u8*)ctx->a + le16toh(ctx->a->value_offset)); - index_end = (u8*)&ir->index + le32_to_cpu(ir->index.index_length); + index_end = (u8*)&ir->index + le32toh(ir->index.index_length); /* The first index entry. */ ie = (INDEX_ENTRY*)((u8*)&ir->index + - le32_to_cpu(ir->index.entries_offset)); + le32toh(ir->index.entries_offset)); /* Bounds checks. */ if ((u8*)ie < (u8*)&ir->index || (u8*)ie + sizeof(INDEX_ENTRY_HEADER) > index_end || @@ -1713,7 +1708,7 @@ goto vol_err; } if (offsetof(INDEX_BLOCK, index) + - le32_to_cpu(ia->index.allocated_size) != + le32toh(ia->index.allocated_size) != ia_ni->block_size) { ntfs_error(vol->mp, "Index buffer (VCN 0x%llx) has a size " "(%u) differing from the directory specified " @@ -1721,7 +1716,7 @@ (unsigned long long) sle64toh(ia->index_block_vcn), (unsigned)(offsetof(INDEX_BLOCK, index) + - le32_to_cpu(ia->index.allocated_size)), + le32toh(ia->index.allocated_size)), (unsigned)ia_ni->block_size, es1, (unsigned long long)dir_ni->mft_no, es2); goto vol_err; @@ -1737,7 +1732,7 @@ (unsigned long long)dir_ni->mft_no); goto vol_err; } - index_end = (u8*)&ia->index + le32_to_cpu(ia->index.index_length); + index_end = (u8*)&ia->index + le32toh(ia->index.index_length); if (index_end > (u8*)ia + ia_ni->block_size) { ntfs_error(vol->mp, "Size of index block (VCN 0x%llx) " "exceeds maximum size%s%llx%s", @@ -1748,7 +1743,7 @@ } /* The first index entry. */ ie = (INDEX_ENTRY*)((u8*)&ia->index + - le32_to_cpu(ia->index.entries_offset)); + le32toh(ia->index.entries_offset)); /* Bounds checks. */ if ((u8*)ie < (u8*)&ia->index || (u8*)ie + sizeof(INDEX_ENTRY_HEADER) > index_end || Modified: soc2012/vbotton/ntfs_apple/ntfs_index.h ============================================================================== --- soc2012/vbotton/ntfs_apple/ntfs_index.h Mon Jun 11 14:02:02 2012 (r237467) +++ soc2012/vbotton/ntfs_apple/ntfs_index.h Mon Jun 11 15:04:34 2012 (r237468) @@ -39,6 +39,9 @@ #define _OSX_NTFS_INDEX_H #include <sys/errno.h> +#include <sys/param.h> +#include <sys/malloc.h> +#include <sys/kernel.h> /* Foward declaration. */ typedef struct _ntfs_index_context ntfs_index_context; @@ -48,7 +51,6 @@ #include "ntfs_layout.h" #include "ntfs_types.h" -#include <stdlib.h> /** * @up: pointer to index context located directly above in the tree * @down: pointer to index context located directly below in the tree @@ -234,6 +236,8 @@ u8 *right_addr; }; +MALLOC_DECLARE(M_INDEX_NTFS_CONTEXT); +MALLOC_DEFINE(M_INDEX_NTFS_CONTEXT, "indexcontext", "index context"); /** * ntfs_index_ctx_alloc - allocate an index context @@ -242,7 +246,7 @@ */ inline ntfs_index_context *ntfs_index_ctx_alloc(void) { - return malloc(sizeof(ntfs_index_context)); + return malloc(sizeof(ntfs_index_context), M_INDEX_NTFS_CONTEXT, M_WAITOK); } /** @@ -316,7 +320,7 @@ */ static inline void ntfs_index_ctx_free(ntfs_index_context *ictx) { - free(ictx); + free(ictx, M_INDEX_NTFS_CONTEXT); } /** Modified: soc2012/vbotton/ntfs_apple/ntfs_inode.h ============================================================================== --- soc2012/vbotton/ntfs_apple/ntfs_inode.h Mon Jun 11 14:02:02 2012 (r237467) +++ soc2012/vbotton/ntfs_apple/ntfs_inode.h Mon Jun 11 15:04:34 2012 (r237468) @@ -38,15 +38,18 @@ #ifndef _OSX_NTFS_INODE_H #define _OSX_NTFS_INODE_H +#include <sys/types.h> +#include <sys/systm.h> #include <sys/buf.h> #include <sys/errno.h> #include <sys/proc.h> #include <sys/queue.h> #include <sys/time.h> -#include <sys/types.h> #include <sys/ucred.h> #include <sys/vnode.h> #include <sys/mutex.h> +#include <sys/proc.h> +#include <sys/param.h> /* Forward declarations. */ typedef struct _ntfs_inode ntfs_inode; @@ -464,7 +467,8 @@ */ static inline ntfs_inode *NTFS_I(struct vnode *vn) { - return vnode_fsnode(vn); + return (ntfs_inode*)vn->v_data; + //return vnode_fsnode(vn); } /** Modified: soc2012/vbotton/ntfs_apple/ntfs_types.h ============================================================================== --- soc2012/vbotton/ntfs_apple/ntfs_types.h Mon Jun 11 14:02:02 2012 (r237467) +++ soc2012/vbotton/ntfs_apple/ntfs_types.h Mon Jun 11 15:04:34 2012 (r237468) @@ -113,7 +113,7 @@ typedef int errno_t; typedef unsigned int lck_rw_type_t; -typedef struct mount mount_t; -typedef struct vnode vnode_t; +typedef struct mount* mount_t; +typedef struct vnode* vnode_t; #endif /* !_OSX_NTFS_TYPES_H */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120611150434.D219F106574E>