Re: [PATCH] sparc64: use COMMAND_LINE_SIZE for boot string

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

 



Even though I just sent a new patch...

On 10/06/2014 11:23 PM, David Miller wrote:
> From: Dave Kleikamp <dave.kleikamp@xxxxxxxxxx>
> Date: Mon, 06 Oct 2014 11:06:27 -0500
> 
>> sparc64 defines COMMAND_LINE_SIZE to be 2048, but the boot string is
>> hard-coded to be 256 bytes long.
>>
>> based on a patch by Bob Picco
>>
>> Signed-off-by: Dave Kleikamp <dave.kleikamp@xxxxxxxxxx>
> 
> I think we might be limited by the size of barg_out[] in the SILO
> bootloader, which is 1024 bytes.
> 
> SILO massages the command line into barg_out[] then does:
> 
> 		if (architecture == sun4u)
> 		    kernel_params = (char *)((hdrs->bootstr_info_ptr_low - 0x400000) + 
> 				(image_base - 0x4000));
>  ...
> 	if (kernel_params) {
>     	    extern char barg_out[];
>     	    int len = *(unsigned int *)kernel_params;
> 
>     	    strncpy (kernel_params + 8, barg_out, len);
>     	    kernel_params [8 + len - 1] = 0;
>     	    *(unsigned int *)(kernel_params + 4) = 1;
> 	}
> 
> So it blindly copies however many bytes you tell it to in that
> bootstr_info area :-/

strncpy will still stop at the first null character, so the only way it
will copy more than 1024 bytes would be if it has already overflowed
barg_out in constructing the command line. Writing the final null
terminator into kernel_params is not a problem.

> So I'm happy to apply a patch that increases the size to 1024,
> whilst adding a comment explaining the SILO limitation.
> --
> To unsubscribe from this list: send the line "unsubscribe sparclinux" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux