Hi Li, On 9/12/18 6:01 PM, Li Qiang wrote: > From: Li Qiang <liq...@gmail.com> > > This patch set try to add the missed read callback for memory region. > Without this patchset, when the guest reads the IO port/memory, it will > cause an NULL-dereference issue. For example, add > "-device isa-debug-exit" to command, then read the 0x501 port, it causes a > SIGSEGV. > > The only exception is 'readonly_mem_ops' as its read is directly > access the underlying host ram as the comments says. > > These missed read callback is mostly pointed by Laszlo Ersek. > > > > Li Qiang (8): > fw_cfg_mem: add read memory region callback > hw: debugexit: add read callback > hw: hyperv_testdev: add read callback > hw: pc-testdev: add read memory region callback > hw: designware: add read memory region callback > hw: pvrdma: add read memory region callback > hw: sun4c: add read memory region callback > exec: add read callback for notdirty memory region
Why not rather simply add a check in memory_region_oldmmio_read_accessor() instead? Eventually: { uint64_t tmp; int idx = ctz32(size); if (unlikely(mr->ops->old_mmio.write[idx] && !mr->ops->old_mmio.read[idx])) { tmp = 0; /* XXX is 0 the expected value??? */ } else { tmp = mr->ops->old_mmio.read[idx](mr->opaque, addr); } ...