diff --git a/fs/hfsplus/bfind.c b/fs/hfsplus/bfind.c index 336d654861c5..9b89dce00ee9 100644 --- a/fs/hfsplus/bfind.c +++ b/fs/hfsplus/bfind.c @@ -217,9 +217,19 @@ int hfs_brec_read(struct hfs_find_data *fd, void *rec, u32 rec_len) res = hfs_brec_find(fd, hfs_find_rec_by_key); if (res) return res; - if (fd->entrylength > rec_len) + printk(KERN_ALERT "HFSPLUS_BREC_READ: rec_len=%u, fd->entrylength=%u\n",rec_len, fd->entrylength); + if (fd->entrylength > rec_len) { + printk(KERN_ALERT "HFSPLUS_BREC_READ: ERROR - entrylength > rec_len\n"); return -EINVAL; + } + + if (fd->entrylength < rec_len) { + printk(KERN_ALERT "HFSPLUS_BREC_READ: WARNING - entrylength (%u) < rec_len (%u) - PARTIAL READ!\n",fd->entrylength, rec_len); + } + hfs_bnode_read(fd->bnode, rec, fd->entryoffset, fd->entrylength); + + printk(KERN_ALERT "HFSPLUS_BREC_READ: Successfully read %u bytes (expected %u)\n",fd->entrylength, rec_len); return 0; }