Re: commit c7314d74fcb0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Al,

Al Viro <viro@xxxxxxxxxxxxxxxxxx> writes:

> The whole image would be an overkill, but System.map and disassembly of
> __fput would be useful...  The thing is, delayed_fput() does this:
>         for (; node; node = next) {
>                 next = llist_next(node);
>                 __fput(llist_entry(node, struct file, f_u.fu_llist));
>         }
> and llist_entry() here is just a cast - f_u.fu_list is at offset zero.
> So to get NULL passed to __fput() here you'd need node == NULL.  Even
> unmapped address that has escaped the loop condition would've oopsed
> before reaching __fput() - we *do* fetch node->next (i.e.
> file->f_u.fu_list.next) before going into __fput(); that isn't going
> to be reordered away.
>
> Besides, f_mode is quite a bit into struct file and dereferencing has
> happened at address 0, unless I'm misreading that oops...

No, I guess you are right.

System.map file is available here: http://natisbad.org/System.map. A
disassembly of __fput() and delayed_fput() is inlined below. Note:
kernel is compiled with LOADADDR set to 0x8000.

__fput() (via arm-linux-gnueabi-objdump -S -EL -D -b binary -m arm
--start-address=0x000838a4 --stop-address=0x83a94 Image):

000838a4 <.data+0x838a4>:
   838a4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}
   838a8:	e1a06000 	mov	r6, r0
   838ac:	e24dd00c 	sub	sp, sp, #12
   838b0:	e590700c 	ldr	r7, [r0, #12]
   838b4:	e5908008 	ldr	r8, [r0, #8]
   838b8:	e5904010 	ldr	r4, [r0, #16]
   838bc:	eb132240 	bl	0x54c1c4
   838c0:	e5965010 	ldr	r5, [r6, #16]
   838c4:	e5963020 	ldr	r3, [r6, #32]
   838c8:	e1d520b0 	ldrh	r2, [r5]
   838cc:	e3130002 	tst	r3, #2
   838d0:	e2022a0f 	and	r2, r2, #61440	; 0xf000
   838d4:	03a0a010 	moveq	sl, #16
   838d8:	13a0a008 	movne	sl, #8
   838dc:	e3520901 	cmp	r2, #16384	; 0x4000
   838e0:	038aa101 	orreq	sl, sl, #1073741824	; 0x40000000
   838e4:	e2139401 	ands	r9, r3, #16777216	; 0x1000000
   838e8:	0a000046 	beq	0x83a08
   838ec:	e5962074 	ldr	r2, [r6, #116]	; 0x74
   838f0:	e2863074 	add	r3, r6, #116	; 0x74
   838f4:	e1520003 	cmp	r2, r3
   838f8:	1a000058 	bne	0x83a60
   838fc:	e1a00006 	mov	r0, r6
   83900:	eb00f5b3 	bl	0xc0fd4
   83904:	e596301c 	ldr	r3, [r6, #28]
   83908:	e3130a02 	tst	r3, #8192	; 0x2000
   8390c:	e5963014 	ldr	r3, [r6, #20]
   83910:	1a000049 	bne	0x83a3c
   83914:	e5933034 	ldr	r3, [r3, #52]	; 0x34
   83918:	e3530000 	cmp	r3, #0
   8391c:	0a000002 	beq	0x8392c
   83920:	e1a00004 	mov	r0, r4
   83924:	e1a01006 	mov	r1, r6
   83928:	e12fff33 	blx	r3
   8392c:	e1d430b0 	ldrh	r3, [r4]
   83930:	e2033a0f 	and	r3, r3, #61440	; 0xf000
   83934:	e3530a02 	cmp	r3, #8192	; 0x2000
   83938:	0a00004b 	beq	0x83a6c
   8393c:	e5963014 	ldr	r3, [r6, #20]
   83940:	e3530000 	cmp	r3, #0
   83944:	0a000001 	beq	0x83950
   83948:	e5930000 	ldr	r0, [r3]
   8394c:	ebff1733 	bl	0x49620
   83950:	e5960030 	ldr	r0, [r6, #48]	; 0x30
   83954:	ebfe8f2a 	bl	0x27604
   83958:	e5963020 	ldr	r3, [r6, #32]
   8395c:	e3130002 	tst	r3, #2
   83960:	1a000013 	bne	0x839b4
   83964:	e3a03000 	mov	r3, #0
   83968:	e586300c 	str	r3, [r6, #12]
   8396c:	e5863008 	str	r3, [r6, #8]
   83970:	e5863010 	str	r3, [r6, #16]
   83974:	e59f1110 	ldr	r1, [pc, #272]	; 0x83a8c
   83978:	e3e04000 	mvn	r4, #0
   8397c:	e3e05000 	mvn	r5, #0
   83980:	e1c120d0 	ldrd	r2, [r1]
   83984:	e0922004 	adds	r2, r2, r4
   83988:	e0a33005 	adc	r3, r3, r5
   8398c:	e1c120f0 	strd	r2, [r1]
   83990:	e59f10f8 	ldr	r1, [pc, #248]	; 0x83a90
   83994:	e1a00006 	mov	r0, r6
   83998:	ebfee9d7 	bl	0x3e0fc
   8399c:	e1a00007 	mov	r0, r7
   839a0:	eb004756 	bl	0x95700
   839a4:	e1a00008 	mov	r0, r8
   839a8:	e28dd00c 	add	sp, sp, #12
   839ac:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}
   839b0:	ea005ea3 	b	0x9b444
   839b4:	e596300c 	ldr	r3, [r6, #12]
   839b8:	e5960008 	ldr	r0, [r6, #8]
   839bc:	e5933028 	ldr	r3, [r3, #40]	; 0x28
   839c0:	e28320b0 	add	r2, r3, #176	; 0xb0
   839c4:	f5d2f000 	pld	[r2]
   839c8:	e1921f9f 	ldrex	r1, [r2]
   839cc:	e2411001 	sub	r1, r1, #1
   839d0:	e182cf91 	strex	ip, r1, [r2]
   839d4:	e33c0000 	teq	ip, #0
   839d8:	1afffffa 	bne	0x839c8
   839dc:	e1d330b0 	ldrh	r3, [r3]
   839e0:	e2032a0b 	and	r2, r3, #45056	; 0xb000
   839e4:	e3520a02 	cmp	r2, #8192	; 0x2000
   839e8:	0affffdd 	beq	0x83964
   839ec:	e2033a0f 	and	r3, r3, #61440	; 0xf000
   839f0:	e3530a01 	cmp	r3, #4096	; 0x1000
   839f4:	0affffda 	beq	0x83964
   839f8:	e3530903 	cmp	r3, #49152	; 0xc000
   839fc:	0affffd8 	beq	0x83964
   83a00:	eb005fdc 	bl	0x9b978
   83a04:	eaffffd6 	b	0x83964
   83a08:	e286b008 	add	fp, r6, #8
   83a0c:	e596100c 	ldr	r1, [r6, #12]
   83a10:	e1a0200a 	mov	r2, sl
   83a14:	e1a0000b 	mov	r0, fp
   83a18:	eb00ca6e 	bl	0xb63d8
   83a1c:	e58d9000 	str	r9, [sp]
   83a20:	e58d9004 	str	r9, [sp, #4]
   83a24:	e1a00005 	mov	r0, r5
   83a28:	e1a0100a 	mov	r1, sl
   83a2c:	e1a0200b 	mov	r2, fp
   83a30:	e3a03001 	mov	r3, #1
   83a34:	eb00c98c 	bl	0xb606c
   83a38:	eaffffab 	b	0x838ec
   83a3c:	e593c040 	ldr	ip, [r3, #64]	; 0x40
   83a40:	e35c0000 	cmp	ip, #0
   83a44:	0affffb2 	beq	0x83914
   83a48:	e3e00000 	mvn	r0, #0
   83a4c:	e1a01006 	mov	r1, r6
   83a50:	e3a02000 	mov	r2, #0
   83a54:	e12fff3c 	blx	ip
   83a58:	e5963014 	ldr	r3, [r6, #20]
   83a5c:	eaffffac 	b	0x83914
   83a60:	e1a00006 	mov	r0, r6
   83a64:	eb00d816 	bl	0xb9ac4
   83a68:	eaffffa3 	b	0x838fc
   83a6c:	e5940118 	ldr	r0, [r4, #280]	; 0x118
   83a70:	e3500000 	cmp	r0, #0
   83a74:	0affffb0 	beq	0x8393c
   83a78:	e5963020 	ldr	r3, [r6, #32]
   83a7c:	e3130901 	tst	r3, #16384	; 0x4000
   83a80:	1affffad 	bne	0x8393c
   83a84:	eb0008bd 	bl	0x85d80
   83a88:	eaffffab 	b	0x8393c
   83a8c:	c07eb4c0 	rsbsgt	fp, lr, r0, asr #9
   83a90:	c008b860 	andgt	fp, r8, r0, ror #16

delayed_fput() (via arm-linux-gnueabi-objdump -S -EL -D -b binary -m arm
--start-address=0x83a94 --stop-address=0x83ad0 Image):

00083a94 <.data+0x83a94>:
   83a94:	e92d4010 	push	{r4, lr}
   83a98:	e59f202c 	ldr	r2, [pc, #44]	; 0x83acc
   83a9c:	e3a03000 	mov	r3, #0
   83aa0:	e1920f9f 	ldrex	r0, [r2]
   83aa4:	e1821f93 	strex	r1, r3, [r2]
   83aa8:	e3310000 	teq	r1, #0
   83aac:	1afffffb 	bne	0x83aa0
   83ab0:	e3500000 	cmp	r0, #0
   83ab4:	08bd8010 	popeq	{r4, pc}
   83ab8:	e5904000 	ldr	r4, [r0]
   83abc:	ebffff78 	bl	0x838a4
   83ac0:	e2540000 	subs	r0, r4, #0
   83ac4:	1afffffb 	bne	0x83ab8
   83ac8:	e8bd8010 	pop	{r4, pc}
   83acc:	c07eb4c8 	rsbsgt	fp, lr, r8, asr #9

Cheers,

a+
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux