vpnor: Fix unable to read unaligned partition override files

Currently when using vpnor and an override file is applied which has
an unaligned size it is impossible to read the last unaligned bit of
the file. This is because the response to the host truncates the window
size when converting from bytes to blocks (effectively aligning down
the size and causing the window to look smaller than it is).

We could blindly align up the size but then the host would be within
its rights to access uninitialised memory which we would like to avoid.
To work around this we always align the window size up to a multiple
of block size. Any memory not read from the file is set to 0xFF to
mimic erased flash.

Fixes: https://github.com/openbmc/openbmc/issues/2344

Reported-by: Stewart Smith <sesmith@au1.ibm.com>
Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Change-Id: Ic857c31e9402b98ab19dba1a23adc74eaf40491b
1 file changed
tree: cdb32d1930cb3630c6b193a8b80be7e4a6335a3d
  1. Documentation/
  2. m4/
  3. test/
  4. xyz/
  5. .gitignore
  6. bootstrap.sh
  7. common.c
  8. common.h
  9. configure.ac
  10. dbus.h
  11. LICENSE
  12. Makefile.am
  13. mbox.h
  14. mboxctl.c
  15. mboxd.c
  16. mboxd_dbus.c
  17. mboxd_dbus.h
  18. mboxd_flash.h
  19. mboxd_flash_physical.c
  20. mboxd_flash_virtual.cpp
  21. mboxd_lpc.c
  22. mboxd_lpc.h
  23. mboxd_lpc_physical.c
  24. mboxd_lpc_virtual.cpp
  25. mboxd_msg.c
  26. mboxd_msg.h
  27. mboxd_pnor_partition_table.cpp
  28. mboxd_pnor_partition_table.h
  29. mboxd_windows.c
  30. mboxd_windows.h
  31. mtd.c
  32. pnor_partition.cpp
  33. pnor_partition.hpp
  34. pnor_partition_defs.h
  35. pnor_partition_table.cpp
  36. pnor_partition_table.hpp
  37. README.md
README.md

Copyright 2017 IBM

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

MBOX

This repo contains the protocol definition for the host to BMC mailbox communication specification which can be found in Documentation/mbox_procotol.md.

There is also a reference implementation of a BMC mailbox daemon, the details of which can be found in Documentation/mboxd.md.

Finally there is also an implementation of a mailbox daemon control program, the details of which can be found in Documentation/mboxctl.md.