Huang Ying
eb085574a7
mm, swap: fix race between swapoff and some swap operations
...
When swapin is performed, after getting the swap entry information from
the page table, system will swap in the swap entry, without any lock held
to prevent the swap device from being swapoff. This may cause the race
like below,
CPU 1 CPU 2
----- -----
do_swap_page
swapin_readahead
__read_swap_cache_async
swapoff swapcache_prepare
p->swap_map = NULL __swap_duplicate
p->swap_map[?] /* !!! NULL pointer access */
Because swapoff is usually done when system shutdown only, the race may
not hit many people in practice. But it is still a race need to be fixed.
To fix the race, get_swap_device() is added to check whether the specified
swap entry is valid in its swap device. If so, it will keep the swap
entry valid via preventing the swap device from being swapoff, until
put_swap_device() is called.
Because swapoff() is very rare code path, to make the normal path runs as
fast as possible, rcu_read_lock/unlock() and synchronize_rcu() instead of
reference count is used to implement get/put_swap_device(). >From
get_swap_device() to put_swap_device(), RCU reader side is locked, so
synchronize_rcu() in swapoff() will wait until put_swap_device() is
called.
In addition to swap_map, cluster_info, etc. data structure in the struct
swap_info_struct, the swap cache radix tree will be freed after swapoff,
so this patch fixes the race between swap cache looking up and swapoff
too.
Races between some other swap cache usages and swapoff are fixed too via
calling synchronize_rcu() between clearing PageSwapCache() and freeing
swap cache data structure.
Another possible method to fix this is to use preempt_off() +
stop_machine() to prevent the swap device from being swapoff when its data
structure is being accessed. The overhead in hot-path of both methods is
similar. The advantages of RCU based method are,
1. stop_machine() may disturb the normal execution code path on other
CPUs.
2. File cache uses RCU to protect its radix tree. If the similar
mechanism is used for swap cache too, it is easier to share code
between them.
3. RCU is used to protect swap cache in total_swapcache_pages() and
exit_swap_address_space() already. The two mechanisms can be
merged to simplify the logic.
Link: http://lkml.kernel.org/r/20190522015423.14418-1-ying.huang@intel.com
Fixes: 235b621767 ("mm/swap: add cluster lock")
Signed-off-by: "Huang, Ying" <ying.huang@intel.com >
Reviewed-by: Andrea Parri <andrea.parri@amarulasolutions.com >
Not-nacked-by: Hugh Dickins <hughd@google.com >
Cc: Andrea Arcangeli <aarcange@redhat.com >
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Cc: Daniel Jordan <daniel.m.jordan@oracle.com >
Cc: Michal Hocko <mhocko@suse.com >
Cc: Minchan Kim <minchan@kernel.org >
Cc: Johannes Weiner <hannes@cmpxchg.org >
Cc: Tim Chen <tim.c.chen@linux.intel.com >
Cc: Mel Gorman <mgorman@techsingularity.net >
Cc: Jérôme Glisse <jglisse@redhat.com >
Cc: Yang Shi <yang.shi@linux.alibaba.com >
Cc: David Rientjes <rientjes@google.com >
Cc: Rik van Riel <riel@redhat.com >
Cc: Jan Kara <jack@suse.cz >
Cc: Dave Jiang <dave.jiang@intel.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2019-07-12 11:05:43 -07:00
..
2019-06-19 17:09:55 +02:00
2019-06-26 09:18:54 -07:00
2019-02-06 09:36:36 -08:00
2019-06-19 17:09:55 +02:00
2019-05-07 19:43:05 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-08 15:20:40 -07:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:18 +02:00
2019-06-19 17:09:55 +02:00
2019-07-04 09:33:57 +02:00
2019-06-05 17:37:07 +02:00
2019-06-20 09:23:22 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-07-08 11:01:13 -07:00
2019-05-31 11:13:10 +02:00
2019-07-03 17:52:08 -04:00
2019-06-19 17:09:55 +02:00
2019-07-09 09:59:43 -07:00
2019-07-05 16:29:19 -07:00
2019-06-21 09:58:42 -07:00
2019-06-24 21:23:55 +08:00
2019-06-25 01:32:59 +02:00
2019-07-08 09:54:55 -07:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:29:22 -07:00
2019-07-11 10:55:49 -07:00
2019-06-19 17:09:55 +02:00
2019-06-17 20:20:36 -07:00
2019-05-24 17:27:13 +02:00
2019-07-04 17:34:34 +01:00
2019-05-30 11:26:32 -07:00
2019-01-28 11:16:04 +01:00
2019-06-19 17:09:55 +02:00
2019-07-11 10:09:44 -07:00
2019-05-30 11:29:53 -07:00
2019-05-02 17:17:52 +02:00
2019-07-04 17:35:11 +01:00
2019-06-05 17:37:09 +02:00
2019-07-10 21:22:43 -07:00
2019-06-03 10:55:38 +02:00
2019-06-19 17:09:07 +02:00
2019-06-05 17:30:29 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:05 +02:00
2019-07-09 10:05:22 -07:00
2019-05-24 17:27:12 +02:00
2019-05-06 11:55:39 +02:00
2019-06-05 17:37:06 +02:00
2019-05-24 17:39:02 +02:00
2019-05-30 11:29:55 -07:00
2019-06-19 17:09:07 +02:00
2019-06-24 19:23:39 +02:00
2019-02-11 11:07:49 +01:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:36:37 +02:00
2019-05-09 00:41:00 -05:00
2019-05-24 17:27:11 +02:00
2019-05-24 17:27:11 +02:00
2019-05-24 17:27:11 +02:00
2019-05-24 17:27:11 +02:00
2019-05-24 17:27:11 +02:00
2019-06-05 17:37:06 +02:00
2019-06-05 17:37:17 +02:00
2019-02-08 06:42:53 -07:00
2019-05-21 11:28:46 +02:00
2019-03-15 11:25:48 -07:00
2019-05-30 11:26:32 -07:00
2019-02-13 08:07:31 +01:00
2019-06-05 17:37:17 +02:00
2019-07-08 18:55:42 -07:00
2019-05-24 17:37:52 +02:00
2019-05-24 17:37:52 +02:00
2019-01-22 14:39:38 -07:00
2019-03-05 21:07:21 -08:00
2019-05-14 09:47:48 -07:00
2019-06-05 17:37:07 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-14 19:52:50 -07:00
2019-07-01 08:18:54 -06:00
2019-05-30 11:26:41 -07:00
2019-05-14 19:52:49 -07:00
2019-04-05 16:02:30 -10:00
2019-06-20 10:29:22 -06:00
2019-06-20 10:32:34 -06:00
2019-04-30 16:12:02 -06:00
2019-06-20 10:29:22 -06:00
2019-06-20 13:03:51 -06:00
2019-02-07 12:57:17 -07:00
2019-05-24 17:36:45 +02:00
2019-06-27 15:25:16 -07:00
2019-06-20 00:06:27 -04:00
2019-06-27 15:25:16 -07:00
2019-06-27 15:25:16 -07:00
2019-03-26 11:24:47 -07:00
2019-04-30 16:11:59 -06:00
2019-04-09 17:05:46 -07:00
2019-03-07 18:31:59 -08:00
2019-05-07 08:39:02 -06:00
2019-06-19 17:09:55 +02:00
2019-06-04 13:42:54 +01:00
2019-03-07 12:20:11 -08:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:08 +02:00
2019-07-08 21:35:12 -07:00
2019-07-11 10:55:49 -07:00
2019-05-15 13:21:37 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:37 +02:00
2019-06-19 17:09:55 +02:00
2019-03-05 21:07:20 -08:00
2019-02-07 00:13:27 +01:00
2019-02-15 19:52:17 +01:00
2019-06-08 12:56:28 +02:00
2019-01-21 07:23:42 +13:00
2019-05-09 15:25:13 -04:00
2019-02-19 13:20:35 +01:00
2019-05-30 11:25:18 -07:00
2019-05-30 11:26:35 -07:00
2019-06-12 20:27:13 +02:00
2019-05-18 15:52:26 -07:00
2019-06-19 17:09:55 +02:00
2019-04-25 22:00:16 +02:00
2019-04-25 22:00:17 +02:00
2019-05-24 17:27:11 +02:00
2019-04-25 21:33:37 +02:00
2019-04-25 21:33:37 +02:00
2019-06-05 17:37:06 +02:00
2019-05-30 11:26:39 -07:00
2019-06-05 17:36:37 +02:00
2019-06-19 17:09:55 +02:00
2019-06-03 12:02:03 +02:00
2019-06-19 17:09:55 +02:00
2019-07-08 11:00:02 +02:00
2019-06-25 19:49:18 +02:00
2019-04-10 00:32:34 +02:00
2019-05-14 19:52:50 -07:00
2019-06-19 17:09:06 +02:00
2019-06-19 17:09:06 +02:00
2019-05-24 17:27:11 +02:00
2019-07-08 20:57:08 -07:00
2019-05-30 11:29:53 -07:00
2019-05-20 15:02:08 -07:00
2019-05-24 17:27:11 +02:00
2019-06-08 13:42:13 -06:00
2019-03-07 18:32:01 -08:00
2019-05-30 11:26:37 -07:00
2019-06-05 17:37:05 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-04-25 15:38:52 -04:00
2019-07-09 10:28:47 -07:00
2019-05-24 17:37:52 +02:00
2019-06-05 17:37:17 +02:00
2019-06-25 13:46:40 -07:00
2019-05-30 11:29:21 -07:00
2019-05-30 11:29:21 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:07 +02:00
2019-05-24 17:37:54 +02:00
2019-06-05 17:37:06 +02:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:41 -07:00
2019-06-24 10:23:16 +02:00
2019-04-08 17:52:46 +02:00
2019-05-06 15:04:40 +02:00
2019-05-21 11:28:40 +02:00
2019-07-12 11:05:41 -07:00
2019-03-29 07:35:00 +01:00
2019-06-27 23:02:12 +01:00
2019-05-24 17:37:53 +02:00
2019-06-19 17:09:55 +02:00
2019-05-01 12:29:28 -04:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:35 -07:00
2019-06-24 23:57:50 +03:00
2019-06-20 10:29:22 -06:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:29:19 -07:00
2019-06-24 19:23:39 +02:00
2019-02-28 03:28:53 -05:00
2019-05-30 11:26:32 -07:00
2019-05-25 16:33:36 -07:00
2019-05-30 11:26:32 -07:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:36:37 +02:00
2019-05-08 21:23:11 -07:00
2019-02-07 16:47:32 +01:00
2019-06-14 14:21:07 -06:00
2019-06-12 20:30:39 +02:00
2019-06-12 20:30:39 +02:00
2019-05-30 11:26:32 -07:00
2019-02-19 10:10:05 +01:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-02-28 08:24:23 -07:00
2019-07-08 16:22:55 +02:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:35 -07:00
2019-06-24 09:16:47 +10:00
2019-03-05 21:07:18 -08:00
2019-06-14 14:18:53 -06:00
2019-05-24 17:27:11 +02:00
2019-01-21 17:48:13 +01:00
2019-07-10 21:22:43 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-28 10:27:53 -07:00
2019-06-19 17:09:11 +02:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:32 -07:00
2019-05-24 17:27:12 +02:00
2019-07-10 20:09:17 -07:00
2019-06-20 14:47:54 +02:00
2019-05-15 16:05:47 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:06 +02:00
2019-06-01 15:51:32 -07:00
2019-04-22 09:48:12 -06:00
2019-03-22 10:38:23 -04:00
2019-05-14 09:47:47 -07:00
2019-02-15 16:54:38 +01:00
2019-02-06 10:05:16 +00:00
2019-05-30 11:29:53 -07:00
2019-01-25 19:35:20 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:32 -07:00
2019-06-05 17:37:06 +02:00
2019-06-05 17:37:06 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:36:38 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:37 -07:00
2019-05-21 11:28:39 +02:00
2019-06-22 21:21:04 +02:00
2019-06-22 21:21:04 +02:00
2019-05-14 09:47:44 -07:00
2019-07-12 11:05:42 -07:00
2019-05-24 17:36:45 +02:00
2019-05-24 17:36:45 +02:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:05 +02:00
2019-04-16 13:08:16 +02:00
2019-05-21 11:28:39 +02:00
2019-05-21 11:28:39 +02:00
2019-05-21 11:28:39 +02:00
2019-05-21 11:28:39 +02:00
2019-05-30 11:27:46 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-01-31 08:25:09 -07:00
2019-07-01 19:15:46 -07:00
2019-06-22 08:59:24 -04:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:32 -07:00
2019-07-05 21:34:50 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-23 09:48:07 -07:00
2019-07-08 19:25:19 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:37 -07:00
2019-05-30 11:26:32 -07:00
2019-06-07 11:00:14 -07:00
2019-01-22 10:23:17 +01:00
2019-07-08 20:28:59 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-26 13:19:46 -07:00
2019-05-30 11:26:32 -07:00
2019-06-02 18:08:36 -07:00
2019-02-04 08:53:56 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:17 +02:00
2019-07-04 17:26:48 +02:00
2019-06-26 14:08:11 +02:00
2019-05-30 11:26:41 -07:00
2019-07-04 17:26:48 +02:00
2019-01-22 13:37:25 +01:00
2019-01-22 13:37:25 +01:00
2019-03-22 14:36:02 +01:00
2019-05-30 11:26:35 -07:00
2019-01-22 13:39:59 +01:00
2019-01-22 13:39:59 +01:00
2019-06-19 17:09:56 +02:00
2019-06-25 12:51:25 +01:00
2019-06-19 17:09:56 +02:00
2019-06-27 17:28:40 -07:00
2019-07-04 17:26:48 +02:00
2019-06-14 14:31:48 -06:00
2019-06-20 09:58:07 +02:00
2019-06-05 17:37:16 +02:00
2019-05-30 11:26:32 -07:00
2019-06-05 17:37:17 +02:00
2019-05-14 19:52:52 -07:00
2019-02-09 19:48:42 -06:00
2019-05-30 11:26:32 -07:00
2019-03-03 21:05:10 -08:00
2019-05-01 10:41:38 +01:00
2019-06-19 17:09:55 +02:00
2019-02-23 10:53:31 +01:00
2019-05-01 10:49:17 +01:00
2019-05-24 17:36:45 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:36:37 +02:00
2019-06-20 17:32:21 -04:00
2019-06-10 13:00:24 +02:00
2019-04-08 22:56:14 +02:00
2019-05-30 11:26:35 -07:00
2019-06-14 19:31:47 -07:00
2019-06-17 12:09:22 +02:00
2019-05-30 11:26:32 -07:00
2019-07-12 11:05:42 -07:00
2019-07-12 11:05:42 -07:00
2019-03-28 10:58:28 +01:00
2019-03-04 13:42:05 +01:00
2019-06-29 16:43:45 +08:00
2019-06-05 17:37:16 +02:00
2019-07-08 19:36:47 -07:00
2019-07-10 18:43:43 -07:00
2019-05-24 17:27:11 +02:00
2019-05-24 17:36:45 +02:00
2019-06-19 17:09:08 +02:00
2019-06-05 17:37:06 +02:00
2019-05-24 17:36:45 +02:00
2019-04-25 22:06:10 +02:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:37:16 +02:00
2019-05-30 11:29:19 -07:00
2019-05-30 11:29:19 -07:00
2019-03-05 21:07:15 -08:00
2019-05-14 19:52:48 -07:00
2019-06-19 17:09:53 +02:00
2019-06-19 17:09:07 +02:00
2019-06-19 17:09:56 +02:00
2019-05-14 19:52:49 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:22 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:17 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:07 +02:00
2019-05-24 22:40:45 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 11:28:46 +02:00
2019-05-24 17:39:02 +02:00
2019-06-05 17:36:38 +02:00
2019-06-19 17:09:55 +02:00
2019-05-06 10:19:19 -06:00
2019-03-07 18:31:59 -08:00
2019-04-18 16:18:27 -04:00
2019-06-01 15:51:31 -07:00
2019-05-14 19:52:49 -07:00
2019-06-29 01:31:08 +02:00
2019-05-21 11:28:45 +02:00
2019-06-05 17:37:06 +02:00
2019-07-08 16:12:03 -07:00
2019-06-24 19:23:44 +02:00
2019-05-24 17:37:53 +02:00
2019-06-08 13:42:13 -06:00
2019-03-07 18:32:03 -08:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-04-23 10:40:32 -07:00
2019-04-02 09:50:48 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:17 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-03-28 02:07:54 +09:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-06-13 17:34:56 -10:00
2019-05-14 09:47:50 -07:00
2019-05-14 09:47:49 -07:00
2019-06-13 17:34:56 -10:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:38 +02:00
2019-05-30 11:26:32 -07:00
2019-05-21 11:28:45 +02:00
2019-03-27 22:49:06 -07:00
2019-05-30 11:26:41 -07:00
2019-05-14 09:47:46 -07:00
2019-07-12 11:05:42 -07:00
2019-06-19 17:09:55 +02:00
2019-07-12 11:05:43 -07:00
2019-05-14 09:47:49 -07:00
2019-05-14 19:52:48 -07:00
2019-03-10 13:16:37 -07:00
2019-05-28 09:03:35 -07:00
2019-05-07 21:50:24 +09:00
2019-04-04 21:04:13 -04:00
2019-05-24 17:27:10 +02:00
2019-05-19 10:58:45 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2019-01-30 20:51:47 -05:00
2019-06-05 17:36:38 +02:00
2019-07-08 19:25:19 -07:00
2019-05-30 11:26:32 -07:00
2019-07-01 19:34:46 -07:00
2019-01-28 11:32:58 +01:00
2019-06-21 17:21:11 +02:00
2019-05-31 18:02:48 +02:00
2019-07-01 19:12:10 -07:00
2019-03-01 16:20:16 -05:00
2019-04-26 16:11:54 -04:00
2019-04-25 14:18:14 -04:00
2019-04-25 14:18:15 -04:00
2019-03-01 16:20:16 -05:00
2019-05-30 11:26:41 -07:00
2019-04-04 18:41:21 +02:00
2019-03-05 21:07:20 -08:00
2019-02-13 11:03:18 -05:00
2019-06-21 11:08:37 +02:00
2019-02-20 07:22:17 -07:00
2019-04-25 16:51:42 +02:00
2019-02-20 07:22:10 -07:00
2019-06-21 11:12:22 +02:00
2019-04-25 19:43:12 +02:00
2019-01-22 10:21:45 +01:00
2019-02-08 15:02:49 -08:00
2019-02-13 09:10:14 +01:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:16 +02:00
2019-02-28 11:40:49 -06:00
2019-05-01 14:26:36 -05:00
2019-05-24 17:27:11 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:30:29 +02:00
2019-05-16 10:29:00 -07:00
2019-05-03 10:49:17 -04:00
2019-06-05 17:37:06 +02:00
2019-07-12 11:05:43 -07:00
2019-07-12 11:05:43 -07:00
2019-07-12 11:05:43 -07:00
2019-05-30 11:26:39 -07:00
2019-07-12 11:05:43 -07:00
2019-03-25 14:49:00 -07:00
2019-05-30 11:29:19 -07:00
2019-04-23 16:38:09 -05:00
2019-02-01 17:24:52 -06:00
2019-06-21 22:05:42 -04:00
2019-02-28 11:09:29 +01:00
2019-04-25 16:33:07 -05:00
2019-04-15 13:24:02 +01:00
2019-04-15 13:24:02 +01:00
2019-05-27 10:55:08 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:07 +02:00
2019-05-21 10:50:45 +02:00
2019-07-08 16:12:03 -07:00
2019-03-13 12:25:31 -07:00
2019-07-08 18:04:41 +02:00
2019-06-24 19:19:23 +02:00
2019-07-12 11:05:42 -07:00
2019-06-05 17:37:07 +02:00
2019-02-07 18:11:58 -08:00
2019-05-30 11:26:37 -07:00
2019-07-08 16:08:55 -07:00
2019-07-08 19:48:57 -07:00
2019-06-28 12:17:55 +02:00
2019-04-26 11:09:55 -07:00
2019-05-30 11:29:52 -07:00
2019-06-05 17:37:16 +02:00
2019-05-21 11:28:45 +02:00
2019-06-05 17:37:07 +02:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:16 +02:00
2019-06-26 10:53:57 +02:00
2019-06-05 17:37:16 +02:00
2019-06-22 11:28:37 +02:00
2019-07-04 10:50:40 +02:00
2019-05-24 17:36:45 +02:00
2019-03-12 10:04:03 -07:00
2019-05-14 19:52:48 -07:00
2019-05-24 17:36:45 +02:00
2019-05-30 11:29:54 -07:00
2019-06-05 17:37:04 +02:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-24 17:36:45 +02:00
2019-05-24 17:36:45 +02:00
2019-05-14 19:52:51 -07:00
2019-06-12 11:42:13 +02:00
2019-06-15 12:25:49 +02:00
2019-07-09 10:28:47 -07:00
2019-05-30 11:26:41 -07:00
2019-05-14 19:52:48 -07:00
2019-05-14 19:52:48 -07:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:06 +02:00
2019-05-24 17:36:45 +02:00
2019-06-13 22:34:55 -07:00
2019-05-30 11:26:32 -07:00
2019-05-29 09:31:44 -05:00
2019-06-26 11:39:11 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:37 +02:00
2019-05-14 19:52:48 -07:00
2019-05-30 11:26:32 -07:00
2019-06-05 17:37:17 +02:00
2019-05-17 10:08:59 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-02-09 08:44:32 -08:00
2019-02-09 08:44:41 -08:00
2019-05-28 09:05:23 -07:00
2019-06-28 19:46:47 +02:00
2019-02-09 08:45:46 -08:00
2019-02-09 08:45:52 -08:00
2019-04-03 12:34:31 +02:00
2019-05-14 19:52:51 -07:00
2019-07-09 12:34:26 -07:00
2019-05-30 11:29:21 -07:00
2019-03-07 18:32:03 -08:00
2019-02-20 21:34:17 -08:00
2019-02-27 23:51:51 +01:00
2019-04-02 17:57:35 +02:00
2019-06-05 17:36:37 +02:00
2019-04-07 19:12:12 -07:00
2019-05-29 13:27:08 -07:00
2019-03-13 09:46:10 -04:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:17 +02:00
2019-05-08 22:14:36 +02:00
2019-05-21 11:28:46 +02:00
2019-05-21 11:28:46 +02:00
2019-06-19 17:09:07 +02:00
2019-06-17 12:28:06 +02:00
2019-06-05 17:37:06 +02:00
2019-05-07 12:47:47 -03:00
2019-06-19 17:09:55 +02:00
2019-07-08 19:19:37 -07:00
2019-05-30 11:29:52 -07:00
2019-05-24 17:39:00 +02:00
2019-05-30 11:26:32 -07:00
2019-06-14 09:02:42 -04:00
2019-06-29 10:33:57 -06:00
2019-04-19 15:09:10 +02:00
2019-06-05 17:37:17 +02:00
2019-07-03 17:52:50 -04:00
2019-05-30 11:26:41 -07:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-31 12:37:46 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:06 +02:00
2019-04-19 09:46:04 -07:00
2019-06-29 16:43:45 +08:00
2019-07-09 09:07:00 -07:00
2019-03-27 14:29:26 -07:00
2019-07-09 11:35:38 -07:00
2019-05-30 11:26:32 -07:00
2019-07-09 12:11:59 -07:00
2019-05-23 16:13:29 +02:00
2019-05-16 15:51:55 -07:00
2019-07-12 11:05:42 -07:00
2019-03-05 21:07:14 -08:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:19 -07:00
2019-07-08 16:12:03 -07:00
2019-04-24 12:17:08 +02:00
2019-05-30 11:26:35 -07:00
2019-03-15 15:29:47 -07:00
2019-05-24 17:36:45 +02:00
2019-04-08 11:59:47 +01:00
2019-06-05 17:36:37 +02:00
2019-03-26 14:39:24 -07:00
2019-02-09 08:45:59 -08:00
2019-05-28 09:03:35 -07:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:37 -07:00
2019-04-29 12:37:57 +02:00
2019-02-07 16:38:35 +01:00
2019-06-17 20:20:36 -07:00
2019-06-05 17:37:16 +02:00
2019-05-30 11:26:32 -07:00
2019-06-15 12:25:55 +02:00
2019-07-03 17:52:50 -04:00
2019-04-08 16:44:21 -06:00
2019-06-05 17:37:04 +02:00
2019-07-08 10:51:25 +02:00
2019-07-12 11:05:43 -07:00
2019-03-10 12:47:57 -07:00
2019-06-05 17:36:37 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:22 -07:00
2019-07-11 10:09:44 -07:00
2019-06-05 17:37:16 +02:00
2019-06-14 20:18:27 -07:00
2019-06-03 11:58:20 +02:00
2019-05-21 11:28:46 +02:00
2019-06-05 17:37:06 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 16:30:37 -07:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:32 -07:00
2019-05-16 16:16:18 -07:00
2019-04-18 11:18:53 +03:00
2019-06-05 17:37:06 +02:00
2019-04-09 08:31:51 -07:00
2019-05-06 19:40:31 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:19 -07:00
2019-05-30 11:29:19 -07:00
2019-02-07 00:13:27 +01:00
2019-03-28 13:41:06 +01:00
2019-05-30 11:26:37 -07:00
2019-06-25 08:54:51 +02:00
2019-07-07 11:50:03 +02:00
2019-06-19 17:09:55 +02:00
2019-02-07 00:13:28 +01:00
2019-05-23 10:08:34 +02:00
2019-05-28 09:06:09 -07:00
2019-05-24 17:39:02 +02:00
2019-06-24 23:57:49 +03:00
2019-06-05 17:37:17 +02:00
2019-06-19 17:09:55 +02:00
2019-07-08 19:19:37 -07:00
2019-04-26 19:04:19 -07:00
2019-06-05 17:37:09 +02:00
2019-06-05 17:37:17 +02:00
2019-06-03 12:32:57 +02:00
2019-04-03 11:02:19 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-06-05 17:37:04 +02:00
2019-06-29 09:47:32 -06:00
2019-06-19 23:45:09 -04:00
2019-05-30 11:26:35 -07:00
2019-05-08 10:03:52 -07:00
2019-06-26 21:02:32 +01:00
2019-05-14 09:47:45 -07:00
2019-05-30 11:26:41 -07:00
2019-06-05 17:30:29 +02:00
2019-03-28 01:55:18 +09:00
2019-05-24 17:27:11 +02:00
2019-05-30 11:26:41 -07:00
2019-06-19 17:09:55 +02:00
2019-03-07 10:34:37 +01:00
2019-05-24 17:27:13 +02:00
2019-05-24 17:27:13 +02:00
2019-06-05 17:30:27 +02:00
2019-03-06 11:19:57 -05:00
2019-02-24 12:06:19 -08:00
2019-04-08 17:05:52 -04:00
2019-05-12 13:11:36 -04:00
2019-05-24 17:39:00 +02:00
2019-06-05 17:37:05 +02:00
2019-05-18 15:52:26 -07:00
2019-07-12 11:05:43 -07:00
2019-05-14 09:47:45 -07:00
2019-06-05 17:37:05 +02:00
2019-06-05 17:37:05 +02:00
2019-05-30 11:26:35 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:37 -07:00
2019-05-15 17:35:54 +01:00
2019-04-09 15:14:49 -06:00
2019-06-05 17:37:07 +02:00
2019-05-30 11:26:41 -07:00
2019-06-27 14:12:15 -07:00
2019-05-31 13:52:41 -04:00
2019-05-24 17:36:47 +02:00