Re: m68k boot failure in -next bisected to 'xarray: Replace exceptional entries'

From: Guenter Roeck
Date: Sun Jun 24 2018 - 00:01:47 EST


On 06/23/2018 08:26 PM, Matthew Wilcox wrote:
On Sat, Jun 23, 2018 at 07:52:35PM -0700, Guenter Roeck wrote:
On 06/23/2018 06:17 PM, Matthew Wilcox wrote:
On Fri, Jun 22, 2018 at 03:33:35PM -0700, Guenter Roeck wrote:
It may be odd that fs/quota/netlink.c:quota_genl_family is not word
aligned, but on the other side I don't think there is a rule that
the function parameter to genl_register_family() - or the second
parameter of idr_alloc() - must be word aligned. Am I missing
something ? After all, it could be a pointer to the nth element
of a string, or the caller could on purpose allocate IDRs for
(ptr), (ptr + 1), and so on.

This is probably going to cure the problem for you (apply on top
of the existing radix tree / IDR changes).

I realised when I was reviewing the patch that it's no good; if you
call idr_replace() with a radix_tree_is_internal_node(), then you'll
still get a crash. I'm going to have to disable the optimisation of
shrinking the tree all the way into the head for the IDR. But this
will probably get m68k working again.


It doesn't crash anymore, but there is still a backtrace.

Oof. Thank you! Updated patch (still doesn't fix idr_replace, but does
fix the idr_for_each() problem, at least according to the tests I added
to the test-suite.


Yes, that is much better:

Build reference: next-20180622-1-g023ad92e94da

Building mcf5208evb:m5208:m5208evb_defconfig:initrd ... running .... passed
Building q800:m68040:mac_defconfig:initrd ... running .... passed
Building q800:m68040:mac_defconfig:rootfs ... running .... passed

Guenter