Loading fs/udf/super.c +25 −11 Original line number Diff line number Diff line Loading @@ -902,14 +902,23 @@ static int udf_find_fileset(struct super_block *sb, static int udf_load_pvoldesc(struct super_block *sb, sector_t block) { struct primaryVolDesc *pvoldesc; struct ustr instr; struct ustr outstr; struct ustr *instr, *outstr; struct buffer_head *bh; uint16_t ident; int ret = 1; instr = kmalloc(sizeof(struct ustr), GFP_NOFS); if (!instr) return 1; outstr = kmalloc(sizeof(struct ustr), GFP_NOFS); if (!outstr) goto out1; bh = udf_read_tagged(sb, block, block, &ident); if (!bh) return 1; goto out2; BUG_ON(ident != TAG_IDENT_PVD); pvoldesc = (struct primaryVolDesc *)bh->b_data; Loading @@ -925,20 +934,25 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block) #endif } if (!udf_build_ustr(&instr, pvoldesc->volIdent, 32)) if (udf_CS0toUTF8(&outstr, &instr)) { strncpy(UDF_SB(sb)->s_volume_ident, outstr.u_name, outstr.u_len > 31 ? 31 : outstr.u_len); if (!udf_build_ustr(instr, pvoldesc->volIdent, 32)) if (udf_CS0toUTF8(outstr, instr)) { strncpy(UDF_SB(sb)->s_volume_ident, outstr->u_name, outstr->u_len > 31 ? 31 : outstr->u_len); udf_debug("volIdent[] = '%s'\n", UDF_SB(sb)->s_volume_ident); } if (!udf_build_ustr(&instr, pvoldesc->volSetIdent, 128)) if (udf_CS0toUTF8(&outstr, &instr)) udf_debug("volSetIdent[] = '%s'\n", outstr.u_name); if (!udf_build_ustr(instr, pvoldesc->volSetIdent, 128)) if (udf_CS0toUTF8(outstr, instr)) udf_debug("volSetIdent[] = '%s'\n", outstr->u_name); brelse(bh); return 0; ret = 0; out2: kfree(outstr); out1: kfree(instr); return ret; } static int udf_load_metadata_files(struct super_block *sb, int partition) Loading Loading
fs/udf/super.c +25 −11 Original line number Diff line number Diff line Loading @@ -902,14 +902,23 @@ static int udf_find_fileset(struct super_block *sb, static int udf_load_pvoldesc(struct super_block *sb, sector_t block) { struct primaryVolDesc *pvoldesc; struct ustr instr; struct ustr outstr; struct ustr *instr, *outstr; struct buffer_head *bh; uint16_t ident; int ret = 1; instr = kmalloc(sizeof(struct ustr), GFP_NOFS); if (!instr) return 1; outstr = kmalloc(sizeof(struct ustr), GFP_NOFS); if (!outstr) goto out1; bh = udf_read_tagged(sb, block, block, &ident); if (!bh) return 1; goto out2; BUG_ON(ident != TAG_IDENT_PVD); pvoldesc = (struct primaryVolDesc *)bh->b_data; Loading @@ -925,20 +934,25 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block) #endif } if (!udf_build_ustr(&instr, pvoldesc->volIdent, 32)) if (udf_CS0toUTF8(&outstr, &instr)) { strncpy(UDF_SB(sb)->s_volume_ident, outstr.u_name, outstr.u_len > 31 ? 31 : outstr.u_len); if (!udf_build_ustr(instr, pvoldesc->volIdent, 32)) if (udf_CS0toUTF8(outstr, instr)) { strncpy(UDF_SB(sb)->s_volume_ident, outstr->u_name, outstr->u_len > 31 ? 31 : outstr->u_len); udf_debug("volIdent[] = '%s'\n", UDF_SB(sb)->s_volume_ident); } if (!udf_build_ustr(&instr, pvoldesc->volSetIdent, 128)) if (udf_CS0toUTF8(&outstr, &instr)) udf_debug("volSetIdent[] = '%s'\n", outstr.u_name); if (!udf_build_ustr(instr, pvoldesc->volSetIdent, 128)) if (udf_CS0toUTF8(outstr, instr)) udf_debug("volSetIdent[] = '%s'\n", outstr->u_name); brelse(bh); return 0; ret = 0; out2: kfree(outstr); out1: kfree(instr); return ret; } static int udf_load_metadata_files(struct super_block *sb, int partition) Loading