diff mbox

possible regression on 3.13 when calling flush_dcache_page

Message ID 20131218072117.GA2383@lge.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonsoo Kim Dec. 18, 2013, 7:21 a.m. UTC
On Mon, Dec 16, 2013 at 03:43:43PM +0100, Ludovic Desroches wrote:
> Hello,
> 
> On Fri, Dec 13, 2013 at 10:59:09AM +0900, Joonsoo Kim wrote:
> > On Thu, Dec 12, 2013 at 03:36:19PM +0100, Ludovic Desroches wrote:
> > > fix mmc mailing list address error
> > > 
> > > On Thu, Dec 12, 2013 at 03:31:50PM +0100, Ludovic Desroches wrote:
> > > > Hi,
> > > > 
> > > > With v3.13-rc3 I have an error when the atmel-mci driver calls
> > > > flush_dcache_page (log at the end of the message).
> > > > 
> > > > Since I didn't have it before, I did a git bisect and the commit introducing
> > > > the error is the following one:
> > > > 
> > > > 106a74e slab: replace free and inuse in struct slab with newly introduced active
> > > > 
> > > > I don't know if this commit has introduced a bug or if it has revealed a bug
> > > > in the atmel-mci driver.
> > 
> > Hello,
> > 
> > I think that this commit may not introduce a bug. This patch remove one
> > variable on slab management structure and replace variable name. So there
> > is no functional change.
> > 
> 
> If I have reverted this patch and other ones you did on top of it and
> the issue disappear.

Hello,

Could you give me your '/proc/slabinfo' before/after this commit (106a74e)?

And how about testing with artificially increasing size of struct slab on
top of this commit (106a74e)?

I really wonder why the problem happens, because this doesn't cause any
functional change as far as I know. Only side-effect from this patch is
decreasing size of struct slab.

Thanks.


> 
> > I doubt that side-effect of this patch reveals a bug in other place.
> > Side-effect is reduced memory usage for slab management structure. It would
> > makes some slabs have more objects with more density since slab management
> > structure is sometimes on the page for objects. So if it diminishes, more
> > objects can be in the page.
> > 
> > Anyway, I will look at it more. If you have any progress, please let me know.
> 
> No progress at the moment.

Comments

Ludovic Desroches Dec. 20, 2013, 8:08 a.m. UTC | #1
Hello,

On Wed, Dec 18, 2013 at 04:21:17PM +0900, Joonsoo Kim wrote:
> On Mon, Dec 16, 2013 at 03:43:43PM +0100, Ludovic Desroches wrote:
> > Hello,
> > 
> > On Fri, Dec 13, 2013 at 10:59:09AM +0900, Joonsoo Kim wrote:
> > > On Thu, Dec 12, 2013 at 03:36:19PM +0100, Ludovic Desroches wrote:
> > > > fix mmc mailing list address error
> > > > 
> > > > On Thu, Dec 12, 2013 at 03:31:50PM +0100, Ludovic Desroches wrote:
> > > > > Hi,
> > > > > 
> > > > > With v3.13-rc3 I have an error when the atmel-mci driver calls
> > > > > flush_dcache_page (log at the end of the message).
> > > > > 
> > > > > Since I didn't have it before, I did a git bisect and the commit introducing
> > > > > the error is the following one:
> > > > > 
> > > > > 106a74e slab: replace free and inuse in struct slab with newly introduced active
> > > > > 
> > > > > I don't know if this commit has introduced a bug or if it has revealed a bug
> > > > > in the atmel-mci driver.
> > > 
> > > Hello,
> > > 
> > > I think that this commit may not introduce a bug. This patch remove one
> > > variable on slab management structure and replace variable name. So there
> > > is no functional change.
> > > 
> > 
> > If I have reverted this patch and other ones you did on top of it and
> > the issue disappear.
> 
> Hello,
> 
> Could you give me your '/proc/slabinfo' before/after this commit (106a74e)?
> 
> And how about testing with artificially increasing size of struct slab on
> top of this commit (106a74e)?
> 
> I really wonder why the problem happens, because this doesn't cause any
> functional change as far as I know. Only side-effect from this patch is
> decreasing size of struct slab.

Sorry I am not at the office, I have tried to reproduce it with a
different device and a different sdcard but without success. I'll test
it on Monday.

Regards

Ludovic

> 
> Thanks.
> 
> diff --git a/mm/slab.c b/mm/slab.c
> index 2ec2336..d2240fd 100644
> --- a/mm/slab.c
> +++ b/mm/slab.c
> @@ -174,6 +174,7 @@ struct slab {
>         struct {
>                 struct list_head list;
>                 void *s_mem;            /* including colour offset */
> +               unsigned int x;
>                 unsigned int active;    /* num of objs active in slab */
>         };
>  };
> 
> > 
> > > I doubt that side-effect of this patch reveals a bug in other place.
> > > Side-effect is reduced memory usage for slab management structure. It would
> > > makes some slabs have more objects with more density since slab management
> > > structure is sometimes on the page for objects. So if it diminishes, more
> > > objects can be in the page.
> > > 
> > > Anyway, I will look at it more. If you have any progress, please let me know.
> > 
> > No progress at the moment.
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Ludovic Desroches Dec. 23, 2013, 10:44 p.m. UTC | #2
On Fri, Dec 20, 2013 at 09:08:51AM +0100, Ludovic Desroches wrote:
> Hello,
> 
> On Wed, Dec 18, 2013 at 04:21:17PM +0900, Joonsoo Kim wrote:
> > On Mon, Dec 16, 2013 at 03:43:43PM +0100, Ludovic Desroches wrote:
> > > Hello,
> > > 
> > > On Fri, Dec 13, 2013 at 10:59:09AM +0900, Joonsoo Kim wrote:
> > > > On Thu, Dec 12, 2013 at 03:36:19PM +0100, Ludovic Desroches wrote:
> > > > > fix mmc mailing list address error
> > > > > 
> > > > > On Thu, Dec 12, 2013 at 03:31:50PM +0100, Ludovic Desroches wrote:
> > > > > > Hi,
> > > > > > 
> > > > > > With v3.13-rc3 I have an error when the atmel-mci driver calls
> > > > > > flush_dcache_page (log at the end of the message).
> > > > > > 
> > > > > > Since I didn't have it before, I did a git bisect and the commit introducing
> > > > > > the error is the following one:
> > > > > > 
> > > > > > 106a74e slab: replace free and inuse in struct slab with newly introduced active
> > > > > > 
> > > > > > I don't know if this commit has introduced a bug or if it has revealed a bug
> > > > > > in the atmel-mci driver.
> > > > 
> > > > Hello,
> > > > 
> > > > I think that this commit may not introduce a bug. This patch remove one
> > > > variable on slab management structure and replace variable name. So there
> > > > is no functional change.
> > > > 
> > > 
> > > If I have reverted this patch and other ones you did on top of it and
> > > the issue disappear.
> > 
> > Hello,
> > 
> > Could you give me your '/proc/slabinfo' before/after this commit (106a74e)?
> > 
> > And how about testing with artificially increasing size of struct slab on
> > top of this commit (106a74e)?
> > 
> > I really wonder why the problem happens, because this doesn't cause any
> > functional change as far as I know. Only side-effect from this patch is
> > decreasing size of struct slab.
> 
> Sorry I am not at the office, I have tried to reproduce it with a
> different device and a different sdcard but without success. I'll test
> it on Monday.

I am still not at the office but I get the same device and the same
sdcard and I don't reproduce it. I am not totally in the same
conditions. It seems there is an extra parameter causing this bug but I
don't figure out which one at the moment.

> 
> Regards
> 
> Ludovic
> 
> > 
> > Thanks.
> > 
> > diff --git a/mm/slab.c b/mm/slab.c
> > index 2ec2336..d2240fd 100644
> > --- a/mm/slab.c
> > +++ b/mm/slab.c
> > @@ -174,6 +174,7 @@ struct slab {
> >         struct {
> >                 struct list_head list;
> >                 void *s_mem;            /* including colour offset */
> > +               unsigned int x;
> >                 unsigned int active;    /* num of objs active in slab */
> >         };
> >  };
> > 
> > > 
> > > > I doubt that side-effect of this patch reveals a bug in other place.
> > > > Side-effect is reduced memory usage for slab management structure. It would
> > > > makes some slabs have more objects with more density since slab management
> > > > structure is sometimes on the page for objects. So if it diminishes, more
> > > > objects can be in the page.
> > > > 
> > > > Anyway, I will look at it more. If you have any progress, please let me know.
> > > 
> > > No progress at the moment.
> > 
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in
> > the body to majordomo@kvack.org.  For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Joonsoo Kim Dec. 24, 2013, 6:38 a.m. UTC | #3
On Mon, Dec 23, 2013 at 11:44:35PM +0100, Ludovic Desroches wrote:
> On Fri, Dec 20, 2013 at 09:08:51AM +0100, Ludovic Desroches wrote:
> > Hello,
> > 
> > On Wed, Dec 18, 2013 at 04:21:17PM +0900, Joonsoo Kim wrote:
> > > On Mon, Dec 16, 2013 at 03:43:43PM +0100, Ludovic Desroches wrote:
> > > > Hello,
> > > > 
> > > > On Fri, Dec 13, 2013 at 10:59:09AM +0900, Joonsoo Kim wrote:
> > > > > On Thu, Dec 12, 2013 at 03:36:19PM +0100, Ludovic Desroches wrote:
> > > > > > fix mmc mailing list address error
> > > > > > 
> > > > > > On Thu, Dec 12, 2013 at 03:31:50PM +0100, Ludovic Desroches wrote:
> > > > > > > Hi,
> > > > > > > 
> > > > > > > With v3.13-rc3 I have an error when the atmel-mci driver calls
> > > > > > > flush_dcache_page (log at the end of the message).
> > > > > > > 
> > > > > > > Since I didn't have it before, I did a git bisect and the commit introducing
> > > > > > > the error is the following one:
> > > > > > > 
> > > > > > > 106a74e slab: replace free and inuse in struct slab with newly introduced active
> > > > > > > 
> > > > > > > I don't know if this commit has introduced a bug or if it has revealed a bug
> > > > > > > in the atmel-mci driver.
> > > > > 
> > > > > Hello,
> > > > > 
> > > > > I think that this commit may not introduce a bug. This patch remove one
> > > > > variable on slab management structure and replace variable name. So there
> > > > > is no functional change.
> > > > > 
> > > > 
> > > > If I have reverted this patch and other ones you did on top of it and
> > > > the issue disappear.
> > > 
> > > Hello,
> > > 
> > > Could you give me your '/proc/slabinfo' before/after this commit (106a74e)?
> > > 
> > > And how about testing with artificially increasing size of struct slab on
> > > top of this commit (106a74e)?
> > > 
> > > I really wonder why the problem happens, because this doesn't cause any
> > > functional change as far as I know. Only side-effect from this patch is
> > > decreasing size of struct slab.
> > 
> > Sorry I am not at the office, I have tried to reproduce it with a
> > different device and a different sdcard but without success. I'll test
> > it on Monday.
> 
> I am still not at the office but I get the same device and the same
> sdcard and I don't reproduce it. I am not totally in the same
> conditions. It seems there is an extra parameter causing this bug but I
> don't figure out which one at the moment.

Okay. I will wait for you!

Thanks for informing progress.
Ludovic Desroches Jan. 3, 2014, 2:54 p.m. UTC | #4
Hi,

On Tue, Dec 24, 2013 at 03:38:37PM +0900, Joonsoo Kim wrote:

[...]

> > > > > > I think that this commit may not introduce a bug. This patch remove one
> > > > > > variable on slab management structure and replace variable name. So there
> > > > > > is no functional change.

You are right, the commit given by git bisect was not the good one...
Since I removed other patches done on top of it, I thought it really was
this one but in fact it is 8456a64.

 dd0f774  Fri Jan 3 12:33:55 2014 +0100  Revert "slab: remove useless
statement for checking pfmemalloc"  Ludovic Desroches 
 ff7487d  Fri Jan 3 12:32:33 2014 +0100  Revert "slab: rename
slab_bufctl to slab_freelist"  Ludovic Desroches 
 b963564  Fri Jan 3 12:32:13 2014 +0100  Revert "slab: fix to calm down
kmemleak warning"  Ludovic Desroches 
 3fcfe50  Fri Jan 3 12:30:32 2014 +0100  Revert "slab: replace
non-existing 'struct freelist *' with 'void *'"  Ludovic Desroches 
 750a795  Fri Jan 3 12:30:16 2014 +0100  Revert "memcg, kmem: rename
cache_from_memcg to cache_from_memcg_idx"  Ludovic Desroches 
 7e2de8a  Fri Jan 3 12:30:10 2014 +0100  mmc: atmel-mci: disable pdc
Ludovic Desroches

In this case I have the kernel oops. If I revert 8456a64 too, it
disappears.

I will try to test it on other devices because I couldn't reproduce it
with newer ones (but it's not the same ARM architecture so I would like
to see if it's also related to the device itself).

In attachment, there are the results of /proc/slabinfo before inserted the
sdio wifi module causing the oops.

Regards

Ludovic
# cat /proc/slabinfo 
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_sla>
ubi_wl_entry_slab      0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
ubifs_inode_slab       0      0    368   10    1 : tunables   54   27    0 : slabdata      0      0      0
fib6_nodes             1    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
ip6_dst_cache          1     17    224   17    1 : tunables  120   60    0 : slabdata      1      1      0
PINGv6                 0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
RAWv6                  4     11    704   11    2 : tunables   54   27    0 : slabdata      1      1      0
UDPLITEv6              0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
UDPv6                  0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
tw_sock_TCPv6          0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
request_sock_TCPv6      0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
TCPv6                  0      0   1344    3    1 : tunables   24   12    0 : slabdata      0      0      0
sd_ext_cdb             2    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
nfs_direct_cache       0      0     96   40    1 : tunables  120   60    0 : slabdata      0      0      0
nfs_commit_data        4      9    416    9    1 : tunables   54   27    0 : slabdata      1      1      0
nfs_write_data        32     36    608    6    1 : tunables   54   27    0 : slabdata      6      6      0
nfs_read_data          0      0    576    7    1 : tunables   54   27    0 : slabdata      0      0      0
nfs_inode_cache        0      0    536    7    1 : tunables   54   27    0 : slabdata      0      0      0
nfs_page               0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fat_inode_cache        0      0    360   11    1 : tunables   54   27    0 : slabdata      0      0      0
fat_cache              0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_transaction_s      0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_inode             0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_journal_handle      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_journal_head      0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_revoke_table_s      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_revoke_record_s      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_inode_cache       0      0    536    7    1 : tunables   54   27    0 : slabdata      0      0      0
ext4_xattr             0      0     48   78    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_free_data         0      0     40   92    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_allocation_context      0      0    112   35    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_prealloc_space      0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_system_zone       0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_io_end            0      0     40   92    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_extent_status      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
configfs_dir_cache      1     68     56   68    1 : tunables  120   60    0 : slabdata      1      1      0
kioctx                 0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
kiocb                  0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fanotify_response_event      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_mark          0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
inotify_event_private_data      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
inotify_inode_mark     12     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
dnotify_mark           0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
dnotify_struct         0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
dio                    0      0    328   12    1 : tunables   54   27    0 : slabdata      0      0      0
fasync_cache           0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
posix_timers_cache      0      0    152   26    1 : tunables  120   60    0 : slabdata      0      0      0
uid_cache              0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
rpc_inode_cache        0      0    320   12    1 : tunables   54   27    0 : slabdata      0      0      0
rpc_buffers            8      8   2048    2    1 : tunables   24   12    0 : slabdata      4      4      0
rpc_tasks              8     30    128   30    1 : tunables  120   60    0 : slabdata      1      1      0
UNIX                   5      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
UDP-Lite               0      0    608    6    1 : tunables   54   27    0 : slabdata      0      0      0
tcp_bind_bucket        0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
inet_peer_cache        0      0    128   30    1 : tunables  120   60    0 : slabdata      0      0      0
ip_fib_trie            3    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
ip_fib_alias           4    145     24  145    1 : tunables  120   60    0 : slabdata      1      1      0
ip_dst_cache           0      0    128   30    1 : tunables  120   60    0 : slabdata      0      0      0
PING                   0      0    576    7    1 : tunables   54   27    0 : slabdata      0      0      0
RAW                    1      7    576    7    1 : tunables   54   27    0 : slabdata      1      1      0
UDP                    0      0    608    6    1 : tunables   54   27    0 : slabdata      0      0      0
tw_sock_TCP            0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
request_sock_TCP       0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
TCP                    0      0   1216    3    1 : tunables   24   12    0 : slabdata      0      0      0
eventpoll_pwq          9     92     40   92    1 : tunables  120   60    0 : slabdata      1      1      0
eventpoll_epi          9     80     96   40    1 : tunables  120   60    0 : slabdata      2      2      0
sgpool-128             2      2   2048    2    1 : tunables   24   12    0 : slabdata      1      1      0
sgpool-64              2      4   1024    4    1 : tunables   54   27    0 : slabdata      1      1      0
sgpool-32              2      8    512    8    1 : tunables   54   27    0 : slabdata      1     random: nonblocking pool is initialized
 1      0
sgpool-16              2     15    256   15    1 : tunables  120   60    0 : slabdata      1      1      0
sgpool-8               2     30    128   30    1 : tunables  120   60    0 : slabdata      1      1      0
scsi_data_buffer       0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
blkdev_queue          14     14   1032    7    2 : tunables   24   12    0 : slabdata      2      2      0
blkdev_requests        8     18    216   18    1 : tunables  120   60    0 : slabdata      1      1      0
blkdev_ioc             0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_event_holder      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_event         1     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
bio-0                  2     30    128   30    1 : tunables  120   60    0 : slabdata      1      1      0
biovec-256             2      2   3072    2    2 : tunables   24   12    0 : slabdata      1      1      0
biovec-128             0      0   1536    5    2 : tunables   24   12    0 : slabdata      0      0      0
biovec-64              0      0    768    5    1 : tunables   54   27    0 : slabdata      0      0      0
biovec-16              0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
sock_inode_cache      21     36    320   12    1 : tunables   54   27    0 : slabdata      3      3      0
skbuff_fclone_cache      0      0    352   11    1 : tunables   54   27    0 : slabdata      0      0      0
skbuff_head_cache      4     20    192   20    1 : tunables  120   60    0 : slabdata      1      1      0
file_lock_cache        4     35    112   35    1 : tunables  120   60    0 : slabdata      1      1      0
shmem_inode_cache    394    396    312   12    1 : tunables   54   27    0 : slabdata     33     33      0
pool_workqueue         6     15    256   15    1 : tunables  120   60    0 : slabdata      1      1      0
proc_inode_cache      48     48    312   12    1 : tunables   54   27    0 : slabdata      4      4      0
sigqueue               0      0    144   27    1 : tunables  120   60    0 : slabdata      0      0      0
bdev_cache            13     18    416    9    1 : tunables   54   27    0 : slabdata      2      2      0
sysfs_dir_cache     2926   2940     64   60    1 : tunables  120   60    0 : slabdata     49     49      0
mnt_cache             20     24    160   24    1 : tunables  120   60    0 : slabdata      1      1      0
filp                  96    120    160   24    1 : tunables  120   60    0 : slabdata      5      5      0
inode_cache         1563   1568    280   14    1 : tunables   54   27    0 : slabdata    112    112      0
dentry              2030   2030    136   29    1 : tunables  120   60    0 : slabdata     70     70      0
names_cache            1      1   4096    1    1 : tunables   24   12    0 : slabdata      1      1      0
buffer_head            0      0     56   68    1 : tunables  120   60    0 : slabdata      0      0      0
nsproxy                1    145     24  145    1 : tunables  120   60    0 : slabdata      1      1      0
vm_area_struct       215    396     88   44    1 : tunables  120   60    0 : slabdata      9      9      0
mm_struct             20     20    384   10    1 : tunables   54   27    0 : slabdata      2      2      0
fs_cache              11    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
files_cache           11     40    192   20    1 : tunables  120   60    0 : slabdata      2      2      0
signal_cache          29     42    512    7    1 : tunables   54   27    0 : slabdata      6      6      0
sighand_cache         33     33   1312    3    1 : tunables   24   12    0 : slabdata     11     11      0
task_struct           29     42    672    6    1 : tunables   54   27    0 : slabdata      7      7      0
cred_jar              40    120     96   40    1 : tunables  120   60    0 : slabdata      3      3      0
anon_vma_chain       254    678     32  113    1 : tunables  120   60    0 : slabdata      6      6      0
anon_vma             193    435     24  145    1 : tunables  120   60    0 : slabdata      3      3      0
pid                   33     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
radix_tree_node      130    143    296   13    1 : tunables   54   27    0 : slabdata     11     11      0
idr_layer_cache       62     63   1080    7    2 : tunables   24   12    0 : slabdata      9      9      0
kmalloc-4194304        0      0 4194304    1 1024 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-2097152        0      0 2097152    1  512 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-1048576        0      0 1048576    1  256 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-524288         0      0 524288    1  128 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-262144         0      0 262144    1   64 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-131072         0      0 131072    1   32 : tunables    8    4    0 : slabdata      0      0      0
kmalloc-65536          0      0  65536    1   16 : tunables    8    4    0 : slabdata      0      0      0
kmalloc-32768          2      2  32768    1    8 : tunables    8    4    0 : slabdata      2      2      0
kmalloc-16384          1      1  16384    1    4 : tunables    8    4    0 : slabdata      1      1      0
kmalloc-8192           2      2   8192    1    2 : tunables    8    4    0 : slabdata      2      2      0
kmalloc-4096           4      4   4096    1    1 : tunables   24   12    0 : slabdata      4      4      0
kmalloc-2048          28     28   2048    2    1 : tunables   24   12    0 : slabdata     14     14      0
kmalloc-1024          39     44   1024    4    1 : tunables   54   27    0 : slabdata     11     11      0
kmalloc-512          204    208    512    8    1 : tunables   54   27    0 : slabdata     26     26      0
kmalloc-256          183    195    256   15    1 : tunables  120   60    0 : slabdata     13     13      0
kmalloc-192          134    140    192   20    1 : tunables  120   60    0 : slabdata      7      7      0
kmalloc-128          204    210    128   30    1 : tunables  120   60    0 : slabdata      7      7      0
kmalloc-96          1099   1120     96   40    1 : tunables  120   60    0 : slabdata     28     28      0
kmalloc-64           648    720     64   60    1 : tunables  120   60    0 : slabdata     12     12      0
kmalloc-32          3018   3164     32  113    1 : tunables  120   60    0 : slabdata     28     28      0
kmem_cache           131    160     96   40    1 : tunables  120   60    0 : slabdata      4      4      0
# cat /proc/slabinfo
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_sla>
ubi_wl_entry_slab      0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
ubifs_inode_slab       0      0    368   11    1 : tunables   54   27    0 : slabdata      0      0      0
fib6_nodes             1    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
ip6_dst_cache          1     17    224   17    1 : tunables  120   60    0 : slabdata      1      1      0
PINGv6                 0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
RAWv6                  4     11    704   11    2 : tunables   54   27    0 : slabdata      1      1      0
UDPLITEv6              0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
UDPv6                  0      0    704   11    2 : tunables   54   27    0 : slabdata      0      0      0
tw_sock_TCPv6          0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
request_sock_TCPv6      0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
TCPv6                  0      0   1344    3    1 : tunables   24   12    0 : slabdata      0      0      0
sd_ext_cdb             2    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
nfs_direct_cache       0      0     96   40    1 : tunables  120   60    0 : slabdata      0      0      0
nfs_commit_data        4      9    416    9    1 : tunables   54   27    0 : slabdata      1      1      0
nfs_write_data        32     36    608    6    1 : tunables   54   27    0 : slabdata      6      6      0
nfs_read_data          0      0    576    7    1 : tunables   54   27    0 : slabdata      0      0      0
nfs_inode_cache        0      0    536    7    1 : tunables   54   27    0 : slabdata      0      0      0
nfs_page               0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fat_inode_cache        0      0    360   11    1 : tunables   54   27    0 : slabdata      0      0      0
fat_cache              0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_transaction_s      0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_inode             0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_journal_handle      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_journal_head      0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_revoke_table_s      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
jbd2_revoke_record_s      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_inode_cache       0      0    536    7    1 : tunables   54   27    0 : slabdata      0      0      0
ext4_xattr             0      0     48   78    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_free_data         0      0     40   93    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_allocation_context      0      0    112   35    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_prealloc_space      0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_system_zone       0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_io_end            0      0     40   93    1 : tunables  120   60    0 : slabdata      0      0      0
ext4_extent_status      0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
configfs_dir_cache      1     68     56   68    1 : tunables  120   60    0 : slabdata      1      1      0
kioctx                 0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
kiocb                  0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fanotify_response_event      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_mark          0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
inotify_event_private_data      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
inotify_inode_mark     12     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
dnotify_mark           0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
dnotify_struct         0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
dio                    0      0    328   12    1 : tunables   54   27    0 : slabdata      0      0      0
fasync_cache           0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
posix_timers_cache      0      0    152   26    1 : tunables  120   60    0 : slabdata      0      0      0
uid_cache              0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
rpc_inode_cache        0      0    320   12    1 : tunables   54   27    0 : slabdata      0      0      0
rpc_buffers            8      8   2048    2    1 : tunables   24   12    0 : slabdata      4      4      0
rpc_tasks              8     31    128   31    1 : tunables  120   60    0 : slabdata      1      1      0
UNIX                   5      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
UDP-Lite               0      0    608    6    1 : tunables   54   27    0 : slabdata      0      0      0
tcp_bind_bucket        0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
inet_peer_cache        0      0    128   31    1 : tunables  120   60    0 : slabdata      0      0      0
ip_fib_trie            3    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
ip_fib_alias           4    146     24  146    1 : tunables  120   60    0 : slabdata      1      1      0
ip_dst_cache           0      0    128   31    1 : tunables  120   60    0 : slabdata      0      0      0
PING                   0      0    576    7    1 : tunables   54   27    0 : slabdata      0      0      0
RAW                    1      7    576    7    1 : tunables   54   27    0 : slabdata      1      1      0
UDP                    0      0    608    6    1 : tunables   54   27    0 : slabdata      0      0      0
tw_sock_TCP            0      0    160   24    1 : tunables  120   60    0 : slabdata      0      0      0
request_sock_TCP       0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
TCP                    0      0   1216    3    1 : tunables   24   12    0 : slabdata      0      0      0
eventpoll_pwq          9     93     40   93    1 : tunables  120   60    0 : slabdata      1      1      0
eventpoll_epi          9     80     96   40    1 : tunables  120   60    0 : slabdata      2      2      0
sgpool-128             2      2   2048    2    1 : tunables   24   12    0 : slabdata      1      1      0
sgpool-64              2      4   1024    4    1 : tunables   54   27    0 : slabdata      1      1      0
sgpool-32              2      8    512    8    1 : tunables   54   27    0 : slabdata      1      1      0
sgpool-16              2     15    256   15    1 : tunables  120   60    0 : slabdata      1      1      0
sgpool-8               2     31    128   31    1 : tunables  120   60    0 : slabdata      1      1      0
scsi_data_buffer       0      0     24  146    1 : tunables  120   60    0 : slabdata      0      0      0
blkdev_queue          14     14   1032    7    2 : tunables   24   12    0 : slabdata      2      2      0
blkdev_requests        8     18    216   18    1 : tunables  120   60    0 : slabdata      1      1      0
blkdev_ioc             0      0     64   60    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_event_holder      0      0     16  204    1 : tunables  120   60    0 : slabdata      0      0      0
fsnotify_event         1     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
bio-0                  2     31    128   31    1 : tunables  120   60    0 : slabdata      1      1      0
biovec-256             2      2   3072    2    2 : tunables   24   12    0 : slabdata      1      1      0
biovec-128             0      0   1536    5    2 : tunables   24   12    0 : slabdata      0      0      0
biovec-64              0      0    768    5    1 : tunables   54   27    0 : slabdata      0      0      0
biovec-16              0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
sock_inode_cache      19     36    320   12    1 : tunables   54   27    0 : slabdata      3      3      0
skbuff_fclone_cache      0      0    352   11    1 : tunables   54   27    0 : slabdata      0      0      0
skbuff_head_cache      0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
file_lock_cache        0      0    112   35    1 : tunables  120   60    0 : slabdata      0      0      0
shmem_inode_cache    394    396    312   12    1 : tunables   54   27    0 : slabdata     33     33      0
pool_workqueue         6     15    256   15    1 : tunables  120   60    0 : slabdata      1      1      0
proc_inode_cache      12     12    312   12    1 : tunables   54   27    0 : slabdata      1      1      0
sigqueue               0      0    144   27    1 : tunables  120   60    0 : slabdata      0      0      0
bdev_cache            13     18    416    9    1 : tunables   54   27    0 : slabdata      2      2      0
sysfs_dir_cache     2926   2940     64   60    1 : tunables  120   60    0 : slabdata     49     49      0
mnt_cache             20     24    160   24    1 : tunables  120   60    0 : slabdata      1      1      0
filp                  65    144    160   24    1 : tunables  120   60    0 : slabdata      6      6      0
inode_cache         1564   1568    280   14    1 : tunables   54   27    0 : slabdata    112    112      0
dentry              2001   2059    136   29    1 : tunables  120   60    0 : slabdata     71     71      0
names_cache            1      1   4096    1    1 : tunables   24   12    0 : slabdata      1      1      0
buffer_head            0      0     56   68    1 : tunables  120   60    0 : slabdata      0      0      0
nsproxy                1    146     24  146    1 : tunables  120   60    0 : slabdata      1      1      0
vm_area_struct       267    352     88   44    1 : tunables  120   60    0 : slabdata      8      8      0
mm_struct             20     20    384   10    1 : tunables   54   27    0 : slabdata      2      2      0
fs_cache              23    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
files_cache           23     40    192   20    1 : tunables  120   60    0 : slabdata      2      2      0
signal_cache          42     42    512    7    1 : tunables   54   27    0 : slabdata      6      6      0
sighand_cache         33     33   1312    3    1 : tunables   24   12    0 : slabdata     11     11      0
task_struct           44     48    672    6    1 : tunables   54   27    0 : slabdata      8      8      0
cred_jar              53     80     96   40    1 : tunables  120   60    0 : slabdata      2      2      0
anon_vma_chain       304    791     32  113    1 : tunables  120   60    0 : slabdata      7      7      0
anon_vma             146    438     24  146    1 : tunables  120   60    0 : slabdata      3      3      0
pid                   45     60     64   60    1 : tunables  120   60    0 : slabdata      1      1      0
radix_tree_node      131    143    296   13    1 : tunables   54   27    0 : slabdata     11     11      0
idr_layer_cache       62     63   1080    7    2 : tunables   24   12    0 : slabdata      9      9      0
kmalloc-4194304        0      0 4194304    1 1024 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-2097152        0      0 2097152    1  512 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-1048576        0      0 1048576    1  256 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-524288         0      0 524288    1  128 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-262144         0      0 262144    1   64 : tunables    1    1    0 : slabdata      0      0      0
kmalloc-131072         0      0 131072    1   32 : tunables    8    4    0 : slabdata      0      0      0
kmalloc-65536          0      0  65536    1   16 : tunables    8    4    0 : slabdata      0      0      0
kmalloc-32768          2      2  32768    1    8 : tunables    8    4    0 : slabdata      2      2      0
kmalloc-16384          1      1  16384    1    4 : tunables    8    4    0 : slabdata      1      1      0
kmalloc-8192           2      2   8192    1    2 : tunables    8    4    0 : slabdata      2      2      0
kmalloc-4096           4      4   4096    1    1 : tunables   24   12    0 : slabdata      4      4      0
kmalloc-2048          28     28   2048    2    1 : tunables   24   12    0 : slabdata     14     14      0
kmalloc-1024          38     40   1024    4    1 : tunables   54   27    0 : slabdata     10     10      0
kmalloc-512          203    208    512    8    1 : tunables   54   27    0 : slabdata     26     26      0
kmalloc-256          195    195    256   15    1 : tunables  120   60    0 : slabdata     13     13      0
kmalloc-192          140    140    192   20    1 : tunables  120   60    0 : slabdata      7      7      0
kmalloc-128          217    217    128   31    1 : tunables  120   60    0 : slabdata      7      7      0
kmalloc-96          1111   1120     96   40    1 : tunables  120   60    0 : slabdata     28     28      0
kmalloc-64           621    660     64   60    1 : tunables  120   60    0 : slabdata     11     11      0
kmalloc-32          3056   3164     32  113    1 : tunables  120   60    0 : slabdata     28     28      0
kmem_cache           131    160     96   40    1 : tunables  120   60    0 : slabdata      4      4      0
Joonsoo Kim Jan. 6, 2014, 12:26 a.m. UTC | #5
On Fri, Jan 03, 2014 at 03:54:04PM +0100, Ludovic Desroches wrote:
> Hi,
> 
> On Tue, Dec 24, 2013 at 03:38:37PM +0900, Joonsoo Kim wrote:
> 
> [...]
> 
> > > > > > > I think that this commit may not introduce a bug. This patch remove one
> > > > > > > variable on slab management structure and replace variable name. So there
> > > > > > > is no functional change.
> 
> You are right, the commit given by git bisect was not the good one...
> Since I removed other patches done on top of it, I thought it really was
> this one but in fact it is 8456a64.

Okay. It seems more reasonable to me.
I guess that this is the same issue with following link.
http://lkml.org/lkml/2014/1/4/81

And, perhaps, that patch solves your problem. But I'm not sure that it is the
best solution for this problem. I should discuss with slab maintainers.

I will think about this problem more deeply and report the solution to you
as soon as possible.

Thanks.

> 
>  dd0f774  Fri Jan 3 12:33:55 2014 +0100  Revert "slab: remove useless
> statement for checking pfmemalloc"  Ludovic Desroches 
>  ff7487d  Fri Jan 3 12:32:33 2014 +0100  Revert "slab: rename
> slab_bufctl to slab_freelist"  Ludovic Desroches 
>  b963564  Fri Jan 3 12:32:13 2014 +0100  Revert "slab: fix to calm down
> kmemleak warning"  Ludovic Desroches 
>  3fcfe50  Fri Jan 3 12:30:32 2014 +0100  Revert "slab: replace
> non-existing 'struct freelist *' with 'void *'"  Ludovic Desroches 
>  750a795  Fri Jan 3 12:30:16 2014 +0100  Revert "memcg, kmem: rename
> cache_from_memcg to cache_from_memcg_idx"  Ludovic Desroches 
>  7e2de8a  Fri Jan 3 12:30:10 2014 +0100  mmc: atmel-mci: disable pdc
> Ludovic Desroches
> 
> In this case I have the kernel oops. If I revert 8456a64 too, it
> disappears.
> 
> I will try to test it on other devices because I couldn't reproduce it
> with newer ones (but it's not the same ARM architecture so I would like
> to see if it's also related to the device itself).
> 
> In attachment, there are the results of /proc/slabinfo before inserted the
> sdio wifi module causing the oops.
> 
> Regards
> 
> Ludovic
Ludovic Desroches Jan. 6, 2014, 9:34 a.m. UTC | #6
On Mon, Jan 06, 2014 at 09:26:48AM +0900, Joonsoo Kim wrote:
> On Fri, Jan 03, 2014 at 03:54:04PM +0100, Ludovic Desroches wrote:
> > Hi,
> > 
> > On Tue, Dec 24, 2013 at 03:38:37PM +0900, Joonsoo Kim wrote:
> > 
> > [...]
> > 
> > > > > > > > I think that this commit may not introduce a bug. This patch remove one
> > > > > > > > variable on slab management structure and replace variable name. So there
> > > > > > > > is no functional change.
> > 
> > You are right, the commit given by git bisect was not the good one...
> > Since I removed other patches done on top of it, I thought it really was
> > this one but in fact it is 8456a64.
> 
> Okay. It seems more reasonable to me.
> I guess that this is the same issue with following link.
> http://lkml.org/lkml/2014/1/4/81
> 
> And, perhaps, that patch solves your problem. But I'm not sure that it is the
> best solution for this problem. I should discuss with slab maintainers.

Yes this patch solves my problem.

> 
> I will think about this problem more deeply and report the solution to you
> as soon as possible.

Ok thanks.

> 
> Thanks.
> 
> > 
> >  dd0f774  Fri Jan 3 12:33:55 2014 +0100  Revert "slab: remove useless
> > statement for checking pfmemalloc"  Ludovic Desroches 
> >  ff7487d  Fri Jan 3 12:32:33 2014 +0100  Revert "slab: rename
> > slab_bufctl to slab_freelist"  Ludovic Desroches 
> >  b963564  Fri Jan 3 12:32:13 2014 +0100  Revert "slab: fix to calm down
> > kmemleak warning"  Ludovic Desroches 
> >  3fcfe50  Fri Jan 3 12:30:32 2014 +0100  Revert "slab: replace
> > non-existing 'struct freelist *' with 'void *'"  Ludovic Desroches 
> >  750a795  Fri Jan 3 12:30:16 2014 +0100  Revert "memcg, kmem: rename
> > cache_from_memcg to cache_from_memcg_idx"  Ludovic Desroches 
> >  7e2de8a  Fri Jan 3 12:30:10 2014 +0100  mmc: atmel-mci: disable pdc
> > Ludovic Desroches
> > 
> > In this case I have the kernel oops. If I revert 8456a64 too, it
> > disappears.
> > 
> > I will try to test it on other devices because I couldn't reproduce it
> > with newer ones (but it's not the same ARM architecture so I would like
> > to see if it's also related to the device itself).
> > 
> > In attachment, there are the results of /proc/slabinfo before inserted the
> > sdio wifi module causing the oops.
> > 
> > Regards
> > 
> > Ludovic
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Joonsoo Kim Jan. 9, 2014, 7:16 a.m. UTC | #7
On Mon, Jan 06, 2014 at 10:34:09AM +0100, Ludovic Desroches wrote:
> On Mon, Jan 06, 2014 at 09:26:48AM +0900, Joonsoo Kim wrote:
> > On Fri, Jan 03, 2014 at 03:54:04PM +0100, Ludovic Desroches wrote:
> > > Hi,
> > > 
> > > On Tue, Dec 24, 2013 at 03:38:37PM +0900, Joonsoo Kim wrote:
> > > 
> > > [...]
> > > 
> > > > > > > > > I think that this commit may not introduce a bug. This patch remove one
> > > > > > > > > variable on slab management structure and replace variable name. So there
> > > > > > > > > is no functional change.
> > > 
> > > You are right, the commit given by git bisect was not the good one...
> > > Since I removed other patches done on top of it, I thought it really was
> > > this one but in fact it is 8456a64.
> > 
> > Okay. It seems more reasonable to me.
> > I guess that this is the same issue with following link.
> > http://lkml.org/lkml/2014/1/4/81
> > 
> > And, perhaps, that patch solves your problem. But I'm not sure that it is the
> > best solution for this problem. I should discuss with slab maintainers.
> 
> Yes this patch solves my problem.
> 
> > 
> > I will think about this problem more deeply and report the solution to you
> > as soon as possible.
> 
> Ok thanks.
> 

Hello,

That patch will be merged through Andrew's tree.
Use it to fix your problem :)

Thanks.
diff mbox

Patch

diff --git a/mm/slab.c b/mm/slab.c
index 2ec2336..d2240fd 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -174,6 +174,7 @@  struct slab {
        struct {
                struct list_head list;
                void *s_mem;            /* including colour offset */
+               unsigned int x;
                unsigned int active;    /* num of objs active in slab */
        };
 };