Merge #676
676: Fix potential unaligned write r=lulf a=lulf Ensure 4 byte alignment of writes to boot magic. Reduce log level Co-authored-by: Ulf Lilleengen <lulf@redhat.com>
This commit is contained in:
commit
5c68f0bae7
@ -315,11 +315,16 @@ impl FirmwareUpdater {
|
|||||||
|
|
||||||
/// Instruct bootloader that DFU should commence at next boot.
|
/// Instruct bootloader that DFU should commence at next boot.
|
||||||
pub async fn mark_update<F: AsyncNorFlash>(&mut self, flash: &mut F) -> Result<(), F::Error> {
|
pub async fn mark_update<F: AsyncNorFlash>(&mut self, flash: &mut F) -> Result<(), F::Error> {
|
||||||
flash.write(self.state.from as u32, &[0, 0, 0, 0]).await?;
|
#[repr(align(4))]
|
||||||
|
struct Aligned([u8; 4]);
|
||||||
|
|
||||||
|
flash
|
||||||
|
.write(self.state.from as u32, &Aligned([0; 4]).0)
|
||||||
|
.await?;
|
||||||
flash
|
flash
|
||||||
.erase(self.state.from as u32, self.state.to as u32)
|
.erase(self.state.from as u32, self.state.to as u32)
|
||||||
.await?;
|
.await?;
|
||||||
info!(
|
trace!(
|
||||||
"Setting swap magic at {} to 0x{:x}, LE: 0x{:x}",
|
"Setting swap magic at {} to 0x{:x}, LE: 0x{:x}",
|
||||||
self.state.from,
|
self.state.from,
|
||||||
&SWAP_MAGIC,
|
&SWAP_MAGIC,
|
||||||
@ -333,7 +338,12 @@ impl FirmwareUpdater {
|
|||||||
|
|
||||||
/// Mark firmware boot successfully
|
/// Mark firmware boot successfully
|
||||||
pub async fn mark_booted<F: AsyncNorFlash>(&mut self, flash: &mut F) -> Result<(), F::Error> {
|
pub async fn mark_booted<F: AsyncNorFlash>(&mut self, flash: &mut F) -> Result<(), F::Error> {
|
||||||
flash.write(self.state.from as u32, &[0, 0, 0, 0]).await?;
|
#[repr(align(4))]
|
||||||
|
struct Aligned([u8; 4]);
|
||||||
|
|
||||||
|
flash
|
||||||
|
.write(self.state.from as u32, &Aligned([0; 4]).0)
|
||||||
|
.await?;
|
||||||
flash
|
flash
|
||||||
.erase(self.state.from as u32, self.state.to as u32)
|
.erase(self.state.from as u32, self.state.to as u32)
|
||||||
.await?;
|
.await?;
|
||||||
@ -350,7 +360,7 @@ impl FirmwareUpdater {
|
|||||||
data: &[u8],
|
data: &[u8],
|
||||||
flash: &mut F,
|
flash: &mut F,
|
||||||
) -> Result<(), F::Error> {
|
) -> Result<(), F::Error> {
|
||||||
info!(
|
trace!(
|
||||||
"Writing firmware at offset 0x{:x} len {}",
|
"Writing firmware at offset 0x{:x} len {}",
|
||||||
self.dfu.from + offset,
|
self.dfu.from + offset,
|
||||||
data.len()
|
data.len()
|
||||||
|
Loading…
Reference in New Issue
Block a user