Even though it's apparently only loading the lower 32-bits using edi, it does seem like it does get sign-extended to 64-bits.
Code:
Breakpoint 1, main () at bar.c:13
13 char *name = malloc(NAME_LENGTH);
=> 0x0000555555555291 <main+12>: bf 1e 00 00 00 mov $0x1e,%edi
0x0000555555555296 <main+17>: e8 85 fe ff ff call 0x555555555120 <malloc@plt>
0x000055555555529b <main+22>: 48 89 45 f0 mov %rax,-0x10(%rbp)
(gdb) info registers
rax 0x555555555285 93824992236165
rbx 0x0 0
rcx 0x555555557d80 93824992247168
rdx 0x7fffffffdf18 140737488346904
rsi 0x7fffffffdf08 140737488346888
rdi 0x1 1
(gdb) set $rdi = 0xffffffffffff
(gdb) info registers
rax 0x555555555285 93824992236165
rbx 0x0 0
rcx 0x555555557d80 93824992247168
rdx 0x7fffffffdf18 140737488346904
rsi 0x7fffffffdf08 140737488346888
rdi 0xffffffffffff 281474976710655
(gdb) si
0x0000555555555296 13 char *name = malloc(NAME_LENGTH);
0x0000555555555291 <main+12>: bf 1e 00 00 00 mov $0x1e,%edi
=> 0x0000555555555296 <main+17>: e8 85 fe ff ff call 0x555555555120 <malloc@plt>
0x000055555555529b <main+22>: 48 89 45 f0 mov %rax,-0x10(%rbp)
(gdb) info registers
rax 0x555555555285 93824992236165
rbx 0x0 0
rcx 0x555555557d80 93824992247168
rdx 0x7fffffffdf18 140737488346904
rsi 0x7fffffffdf08 140737488346888
rdi 0x1e 30
Despite deliberately clobbering the upper word of rdi, it still got cleared to zero by the 32-bit mov to edi.