CC: [email protected] CC: [email protected] TO: Helge Deller <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: dcc0b49040c70ad827a7f3d58a21b01fdb14e749 commit: 024f5b597564acced9e69305f7a9ef1202186a61 parisc: Add qemu fw_cfg interface date: 4 months ago :::::: branch date: 13 hours ago :::::: commit date: 4 months ago compiler: hppa-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> cppcheck possible warnings: (new ones prefixed by >>, may not real problems) >> drivers/firmware/google/memconsole-coreboot.c:52:14: warning: Shifting >> signed 32-bit value by 31 bits is undefined behaviour >> [shiftTooManyBitsSigned] if (flags & OVERFLOW) { ^ vim +52 drivers/firmware/google/memconsole-coreboot.c d384d6f43d1ec3 Thierry Escande 2017-03-28 32 a5061d028594a3 Julius Werner 2017-05-02 33 /* a5061d028594a3 Julius Werner 2017-05-02 34 * The cbmem_console structure is read again on every access because it may a5061d028594a3 Julius Werner 2017-05-02 35 * change at any time if runtime firmware logs new messages. This may rarely a5061d028594a3 Julius Werner 2017-05-02 36 * lead to race conditions where the firmware overwrites the beginning of the a5061d028594a3 Julius Werner 2017-05-02 37 * ring buffer with more lines after we have already read |cursor|. It should be a5061d028594a3 Julius Werner 2017-05-02 38 * rare and harmless enough that we don't spend extra effort working around it. a5061d028594a3 Julius Werner 2017-05-02 39 */ 7918cfc46cfad7 Julius Werner 2017-05-02 40 static ssize_t memconsole_coreboot_read(char *buf, loff_t pos, size_t count) 7918cfc46cfad7 Julius Werner 2017-05-02 41 { a5061d028594a3 Julius Werner 2017-05-02 42 u32 cursor = cbmem_console->cursor & CURSOR_MASK; a5061d028594a3 Julius Werner 2017-05-02 43 u32 flags = cbmem_console->cursor & ~CURSOR_MASK; 40fbb23881291b Julius Werner 2017-05-23 44 u32 size = cbmem_console_size; a5061d028594a3 Julius Werner 2017-05-02 45 struct seg { /* describes ring buffer segments in logical order */ a5061d028594a3 Julius Werner 2017-05-02 46 u32 phys; /* physical offset from start of mem buffer */ a5061d028594a3 Julius Werner 2017-05-02 47 u32 len; /* length of segment */ a5061d028594a3 Julius Werner 2017-05-02 48 } seg[2] = { {0}, {0} }; a5061d028594a3 Julius Werner 2017-05-02 49 size_t done = 0; a5061d028594a3 Julius Werner 2017-05-02 50 int i; a5061d028594a3 Julius Werner 2017-05-02 51 a5061d028594a3 Julius Werner 2017-05-02 @52 if (flags & OVERFLOW) { a5061d028594a3 Julius Werner 2017-05-02 53 if (cursor > size) /* Shouldn't really happen, but... */ a5061d028594a3 Julius Werner 2017-05-02 54 cursor = 0; a5061d028594a3 Julius Werner 2017-05-02 55 seg[0] = (struct seg){.phys = cursor, .len = size - cursor}; a5061d028594a3 Julius Werner 2017-05-02 56 seg[1] = (struct seg){.phys = 0, .len = cursor}; a5061d028594a3 Julius Werner 2017-05-02 57 } else { a5061d028594a3 Julius Werner 2017-05-02 58 seg[0] = (struct seg){.phys = 0, .len = min(cursor, size)}; a5061d028594a3 Julius Werner 2017-05-02 59 } a5061d028594a3 Julius Werner 2017-05-02 60 a5061d028594a3 Julius Werner 2017-05-02 61 for (i = 0; i < ARRAY_SIZE(seg) && count > done; i++) { a5061d028594a3 Julius Werner 2017-05-02 62 done += memory_read_from_buffer(buf + done, count - done, &pos, a5061d028594a3 Julius Werner 2017-05-02 63 cbmem_console->body + seg[i].phys, seg[i].len); a5061d028594a3 Julius Werner 2017-05-02 64 pos -= seg[i].len; a5061d028594a3 Julius Werner 2017-05-02 65 } a5061d028594a3 Julius Werner 2017-05-02 66 return done; 7918cfc46cfad7 Julius Werner 2017-05-02 67 } 7918cfc46cfad7 Julius Werner 2017-05-02 68 :::::: The code at line 52 was first introduced by commit :::::: a5061d028594a31dbf70f4554e0b7d83e5ce770f firmware: google: memconsole: Adapt to new coreboot ring buffer format :::::: TO: Julius Werner <[email protected]> :::::: CC: Greg Kroah-Hartman <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
