syzbot


KCSAN: data-race in __xa_clear_mark / xas_find_marked (2)

Status: moderation: reported on 2021/06/26 18:58
Subsystems: fs mm
[Documentation on labels]
Reported-by: syzbot+03743c59b799c7b55cd4@syzkaller.appspotmail.com
First crash: 1807d, last: 9h52m
✨ AI Jobs (4)
ID Workflow Result Correct Bug Created Started Finished Revision Error
72fecced-8864-4f9f-aa9a-8feff775cf9c assessment-security 💥 KCSAN: data-race in __xa_clear_mark / xas_find_marked (2) 2026/05/15 06:56 2026/05/15 06:56 2026/05/15 06:57 6ccb967e465e832a7bfd7a116ad00d52a0923a5d failed to run ["git" "pull" "origin" "HEAD" "--depth=1" "--allow-unrelated-histories"]: exit status 128 From /app/workdir/repo/linux * branch HEAD -> FETCH_HEAD Updating files: 11% (11195/93697) Updating files: 12% (11244/93697) Updating files: 13% (12181/93697) Updating files: 14% (13118/93697) Updating files: 15% (14055/93697) Updating files: 16% (14992/93697) Updating files: 17% (15929/93697) Updating files: 18% (16866/93697) Updating files: 19% (17803/93697) error: unable to write file arch/arm64/boot/dts/qcom/msm8996-oneplus-common.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8996-oneplus3.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996-oneplus3t.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-natrium.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-scorpio.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8996pro.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8998-asus-novago-tp370ql.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-hp-envy-x2.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-mtp.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-oneplus-cheeseburger.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-oneplus-common.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8998-oneplus-dumpling.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-lilac.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-maple.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-poplar.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi error: unable to write file arch/arm64/boot/dts/qcom/msm8998-xiaomi-sagit.dts error: unable to write file arch/arm64/boot/dts/qcom/msm8998.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm4125.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm6125.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm6150.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm6150l.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm6350.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm660.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm660l.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm7250b.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm7325.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm7550.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm7550ba.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8004.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8005.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8009.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8010-kaanapali.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8010.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8150.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8150b.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8150l.dtsi error: unable to write file arch/arm64/boot/dts/qcom/pm8350.dtsi error: unable to write file a
a0741bf4-ef63-405e-93ee-97475b6df3b8 repro KCSAN: data-race in __xa_clear_mark / xas_find_marked (2) 2026/03/07 06:26 2026/03/07 06:26 2026/03/07 06:28 31e9c887f7dc24e04b3ca70d0d54fc34141844b0
be28beee-490e-4e38-957e-44e33e42eab1 assessment-kcsan Benign: ✅ Confident: ✅ KCSAN: data-race in __xa_clear_mark / xas_find_marked (2) 2026/02/24 18:46 2026/02/24 18:46 2026/02/24 18:48 305c0ec5cd886e2d13738e28e1b2df9b0ec20fc9
f2b43e1e-7b62-4577-8484-accbf9317c08 assessment-kcsan 💥 KCSAN: data-race in __xa_clear_mark / xas_find_marked (2) 2026/01/09 22:47 2026/01/09 22:47 2026/01/09 23:06 7519916073b761ced56a7b15fdeeb4674e8dc125 Error 429, Message: You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. * Quota exceeded for metric: generativelanguage.googleapis.com/generate_requests_per_model_per_day, limit: 0, Status: RESOURCE_EXHAUSTED, Details: [map[@type:type.googleapis.com/google.rpc.Help links:[map[description:Learn more about Gemini API quotas url:https://ai.google.dev/gemini-api/docs/rate-limits]]] map[@type:type.googleapis.com/google.rpc.QuotaFailure violations:[map[quotaId:GenerateRequestsPerDayPerProjectPerModel quotaMetric:generativelanguage.googleapis.com/generate_requests_per_model_per_day]]] map[@type:type.googleapis.com/google.rpc.DebugInfo detail:[ORIGINAL ERROR] generic::resource_exhausted: You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. * Quota exceeded for metric: generativelanguage.googleapis.com/generate_requests_per_model_per_day, limit: 0 [google.rpc.error_details_ext] { message: "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_requests_per_model_per_day, limit: 0" details { type_url: "type.googleapis.com/language_labs.genai.debug.GeminiApiDebugInfo" value: "RM\nK\nEgenerativelanguage.googleapis.com/generate_requests_per_model_per_day\030\000\"\000" } details { [type.googleapis.com/google.rpc.Help] { links { description: "Learn more about Gemini API quotas" url: "https://ai.google.dev/gemini-api/docs/rate-limits" } } } details { [type.googleapis.com/google.rpc.QuotaFailure] { violations { quota_metric: "generativelanguage.googleapis.com/generate_requests_per_model_per_day" quota_id: "GenerateRequestsPerDayPerProjectPerModel" } } } }]]
Similar bugs (1)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in __xa_clear_mark / xas_find_marked fs mm 6 558 1808d 2108d 0/29 closed as invalid on 2021/06/07 13:50

Sample crash report:
==================================================================
BUG: KCSAN: data-race in __xa_clear_mark / xas_find_marked

read-write to 0xffff88811be12230 of 8 bytes by interrupt on cpu 1:
 instrument_read_write include/linux/instrumented.h:56 [inline]
 __instrument_read_write_bitop include/asm-generic/bitops/instrumented-non-atomic.h:84 [inline]
 ___test_and_clear_bit include/asm-generic/bitops/instrumented-non-atomic.h:114 [inline]
 node_clear_mark lib/xarray.c:102 [inline]
 xas_clear_mark lib/xarray.c:922 [inline]
 __xa_clear_mark+0xf5/0x1e0 lib/xarray.c:2100
 __folio_end_writeback+0xf4/0x360 mm/page-writeback.c:2965
 folio_end_writeback_no_dropbehind+0x6d/0x1d0 mm/filemap.c:1667
 folio_end_writeback+0x1c/0x70 mm/filemap.c:1693
 end_buffer_async_write+0x156/0x1f0 fs/buffer.c:415
 end_bio_bh_io_sync+0x79/0xa0 fs/buffer.c:2673
 bio_endio+0x35b/0x3f0 block/bio.c:1798
 blk_update_request+0x338/0x710 block/blk-mq.c:1016
 blk_mq_end_request+0x26/0x50 block/blk-mq.c:1178
 lo_complete_rq+0x98/0x140 drivers/block/loop.c:314
 blk_complete_reqs block/blk-mq.c:1253 [inline]
 blk_done_softirq+0x77/0xb0 block/blk-mq.c:1258
 handle_softirqs+0xb9/0x280 kernel/softirq.c:622
 run_ksoftirqd+0x1c/0x30 kernel/softirq.c:1076
 smpboot_thread_fn+0x32a/0x510 kernel/smpboot.c:160
 kthread+0x22a/0x280 kernel/kthread.c:436
 ret_from_fork+0x146/0x330 arch/x86/kernel/process.c:158
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

read to 0xffff88811be12230 of 8 bytes by task 18141 on cpu 0:
 xas_find_chunk include/linux/xarray.h:1752 [inline]
 xas_find_marked+0x213/0x620 lib/xarray.c:1510
 find_get_entry mm/filemap.c:2070 [inline]
 filemap_get_folios_tag+0xfa/0x430 mm/filemap.c:2338
 __filemap_fdatawait_range mm/filemap.c:524 [inline]
 filemap_write_and_wait_range+0x1f5/0x370 mm/filemap.c:693
 filemap_write_and_wait include/linux/pagemap.h:65 [inline]
 sync_blockdev+0x35/0x50 block/bdev.c:276
 loop_set_status+0x122/0x6a0 drivers/block/loop.c:1245
 loop_set_status_old drivers/block/loop.c:1362 [inline]
 lo_ioctl+0x799/0x13a0 drivers/block/loop.c:1551
 blkdev_ioctl+0x387/0x460 block/ioctl.c:797
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:597 [inline]
 __se_sys_ioctl+0xce/0x140 fs/ioctl.c:583
 __x64_sys_ioctl+0x43/0x50 fs/ioctl.c:583
 x64_sys_call+0x1563/0x3020 arch/x86/include/generated/asm/syscalls_64.h:17
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x12c/0x3b0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0xe000000000000000 -> 0x0000000000000000

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 UID: 0 PID: 18141 Comm: syz.1.5223 Tainted: G        W           syzkaller #0 PREEMPT(full) 
Tainted: [W]=WARN
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/18/2026
==================================================================

Crashes (5312):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/05/20 01:25 upstream 27fa82620cba 0909d65f .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/19 15:33 upstream ab5fce87a778 223544dc .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/18 23:26 upstream 4d3a2a466b8d 9f74d399 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/18 10:22 upstream 5200f5f493f7 55156e84 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/17 23:41 upstream e5d505e3664b de5aae85 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/17 00:03 upstream 6916d5703ddf de5aae85 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/16 17:58 upstream d458a240344c a15a64a6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/15 22:03 upstream d458a240344c 81fb92f3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/15 08:38 upstream 70eda68668d1 9cd3beaa .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/15 07:30 upstream 70eda68668d1 6ccb967e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/14 17:50 upstream 66182ca873a4 6ccb967e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/14 01:44 upstream e1914add2799 6ccb967e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/13 09:38 upstream 1d5dcaa3bd65 fec2a7ee .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/12 20:01 upstream c21b90f77687 a0949470 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/12 18:27 upstream c21b90f77687 07aeade5 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/12 12:03 upstream 50897c955902 07aeade5 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/11 23:54 upstream 50897c955902 d168f260 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/11 19:54 upstream 5d6919055dec d168f260 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/11 06:52 upstream 5d6919055dec 845acb1c .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/10 21:45 upstream 5d6919055dec 29233ece .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/10 09:04 upstream 1bfaee9d3351 29233ece .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/09 19:37 upstream e92b2872d0b1 29233ece .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/09 04:12 upstream 27a26ccfd528 29233ece .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/08 14:47 upstream 917719c412c4 b2988c17 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/08 02:04 upstream fcee7d82f27d 5633175a .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/07 14:41 upstream 8ab992f815d6 cbf9e0fc .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/07 01:56 upstream 5862221fdded f250db59 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/06 12:36 upstream 74fe02ce122a 1dddfd3d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/05 23:04 upstream 9207d47f966b 26da2c66 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/05 13:13 upstream a293ec25d59d 06e69a27 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/04 22:39 upstream c7e4e4d5f7dc a898ba9c .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/04 20:25 upstream 6d35786de281 a898ba9c .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/04 07:02 upstream 6d35786de281 a0d91488 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/03 18:22 upstream f377d0025eb0 a0d91488 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/02 22:02 upstream 66edb901bf87 a0d91488 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/02 11:23 upstream f1a5e78a55eb a0d91488 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/02 00:10 upstream 6fe0be6dc7fa 753c55b9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/05/01 04:58 upstream 26fd6bff2c05 753c55b9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/30 14:26 upstream e75a43c7cec4 a7464baf .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/30 11:55 upstream e75a43c7cec4 a7464baf .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/29 21:00 upstream 57b8e2d666a3 005438fc .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/29 15:26 upstream 57b8e2d666a3 7ca9e4d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/29 10:33 upstream dca922e019dd 7ca9e4d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/04/28 20:22 upstream dca922e019dd 95008c03 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/03/07 00:29 upstream 651690480a96 5cb44a80 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/02/24 10:41 upstream 7dff99b35460 96b1aa46 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2026/01/09 20:12 upstream 372800cb95a3 d6526ea3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2021/06/26 05:21 upstream b7050b242430 9d2ab5df .config console log report info ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2021/06/22 18:45 upstream 0c18f29aae7c aba2b2fb .config console log report info ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
2021/06/07 18:41 upstream 614124bea77e b718257f .config console log report info ci2-upstream-kcsan-gce KCSAN: data-race in __xa_clear_mark / xas_find_marked
* Struck through repros no longer work on HEAD.