/Linux-v6.6/kernel/livepatch/ |
D | shadow.c | 70 static inline bool klp_shadow_match(struct klp_shadow *shadow, void *obj, in klp_shadow_match() argument 73 return shadow->obj == obj && shadow->id == id; in klp_shadow_match() 85 struct klp_shadow *shadow; in klp_shadow_get() local 89 hash_for_each_possible_rcu(klp_shadow_hash, shadow, node, in klp_shadow_get() 92 if (klp_shadow_match(shadow, obj, id)) { in klp_shadow_get() 94 return shadow->data; in klp_shadow_get() 234 static void klp_shadow_free_struct(struct klp_shadow *shadow, in klp_shadow_free_struct() argument 237 hash_del_rcu(&shadow->node); in klp_shadow_free_struct() 239 dtor(shadow->obj, shadow->data); in klp_shadow_free_struct() 240 kfree_rcu(shadow, rcu_head); in klp_shadow_free_struct() [all …]
|
/Linux-v6.6/drivers/scsi/ |
D | xen-scsifront.c | 121 struct vscsifrnt_shadow *shadow[VSCSIIF_MAX_REQS]; member 163 info->shadow[id] = NULL; in _scsifront_put_rqid() 182 struct vscsifrnt_shadow *shadow) in scsifront_do_request() argument 186 struct scsi_cmnd *sc = shadow->sc; in scsifront_do_request() 197 info->shadow[id] = shadow; in scsifront_do_request() 198 shadow->rqid = id; in scsifront_do_request() 204 ring_req->act = shadow->act; in scsifront_do_request() 205 ring_req->ref_rqid = shadow->ref_rqid; in scsifront_do_request() 206 ring_req->nr_segments = shadow->nr_segments; in scsifront_do_request() 220 for (i = 0; i < (shadow->nr_segments & ~VSCSIIF_SG_GRANT); i++) in scsifront_do_request() [all …]
|
/Linux-v6.6/Documentation/livepatch/ |
D | shadow-vars.rst | 6 additional "shadow" data with existing data structures. Shadow data is 8 unmodified. The shadow variable API described in this document is used 9 to allocate/add and remove/free shadow variables to/from their parents. 13 shadow data. The numeric identifier is a simple enumeration that may be 14 used to describe shadow variable version, class or type, etc. More 16 numeric id subsequently filters hashtable queries. Multiple shadow 24 (See the full API usage docbook notes in livepatch/shadow.c.) 26 A hashtable references all shadow variables. These references are 30 meta-data and shadow-data: 37 - data[] - storage for shadow data [all …]
|
/Linux-v6.6/Documentation/arch/x86/ |
D | shstk.rst | 14 CET introduces shadow stack and indirect branch tracking (IBT). A shadow stack 17 return address to both the normal stack and the shadow stack. Upon 18 function return, the processor pops the shadow stack copy and compares it 23 shadow stack and kernel IBT are supported. 28 To use userspace shadow stack you need HW that supports it, a kernel 31 The kernel Kconfig option is X86_USER_SHADOW_STACK. When compiled in, shadow 34 To build a user shadow stack enabled kernel, Binutils v2.29 or LLVM v6 or later 38 CET. "user_shstk" means that userspace shadow stack is supported on the current 101 Currently shadow stack and WRSS are supported via this interface. WRSS 102 can only be enabled with shadow stack, and is automatically disabled [all …]
|
/Linux-v6.6/mm/kmsan/ |
D | init.c | 97 struct page *shadow, *origin; member 116 struct page *shadow, *origin; in kmsan_memblock_free_pages() local 118 if (!held_back[order].shadow) { in kmsan_memblock_free_pages() 119 held_back[order].shadow = page; in kmsan_memblock_free_pages() 126 shadow = held_back[order].shadow; in kmsan_memblock_free_pages() 128 kmsan_setup_meta(page, shadow, origin, order); in kmsan_memblock_free_pages() 130 held_back[order].shadow = NULL; in kmsan_memblock_free_pages() 168 struct page *page, *shadow, *origin; in do_collection() local 172 shadow = smallstack_pop(&collect); in do_collection() 174 kmsan_setup_meta(page, shadow, origin, collect.order); in do_collection() [all …]
|
D | shadow.c | 85 void *shadow; in kmsan_get_shadow_origin_ptr() local 97 shadow = kmsan_get_metadata(address, KMSAN_META_SHADOW); in kmsan_get_shadow_origin_ptr() 98 if (!shadow) in kmsan_get_shadow_origin_ptr() 101 ret.shadow = shadow; in kmsan_get_shadow_origin_ptr() 108 ret.shadow = dummy_store_page; in kmsan_get_shadow_origin_ptr() 112 ret.shadow = dummy_load_page; in kmsan_get_shadow_origin_ptr() 175 struct page *shadow, *origin; in kmsan_alloc_page() local 182 shadow = shadow_page_for(page); in kmsan_alloc_page() 186 __memset(page_address(shadow), 0, PAGE_SIZE * pages); in kmsan_alloc_page() 195 __memset(page_address(shadow), -1, PAGE_SIZE * pages); in kmsan_alloc_page() [all …]
|
D | core.c | 90 u32 *align_shadow_src, shadow; in kmsan_internal_memmove_metadata() local 132 shadow = align_shadow_src[i]; in kmsan_internal_memmove_metadata() 140 shadow = (shadow >> skip_bits) << skip_bits; in kmsan_internal_memmove_metadata() 150 shadow = (shadow << skip_bits) >> skip_bits; in kmsan_internal_memmove_metadata() 156 if (origin_src[i] && (origin_src[i] != old_origin) && shadow) { in kmsan_internal_memmove_metadata() 167 if (shadow) in kmsan_internal_memmove_metadata() 197 shadow = align_shadow_src[src_slots - 1]; in kmsan_internal_memmove_metadata() 199 shadow = (shadow << skip_bits) >> skip_bits; in kmsan_internal_memmove_metadata() 200 if (shadow) in kmsan_internal_memmove_metadata() 205 shadow = align_shadow_src[0]; in kmsan_internal_memmove_metadata() [all …]
|
D | instrumentation.c | 138 static inline void get_param0_metadata(u64 *shadow, in get_param0_metadata() argument 143 *shadow = *(u64 *)(ctx->cstate.param_tls); in get_param0_metadata() 147 static inline void set_retval_metadata(u64 shadow, depot_stack_handle_t origin) in set_retval_metadata() argument 151 *(u64 *)(ctx->cstate.retval_tls) = shadow; in set_retval_metadata() 161 u64 shadow; in __msan_memmove() local 163 get_param0_metadata(&shadow, &origin); in __msan_memmove() 175 set_retval_metadata(shadow, origin); in __msan_memmove() 186 u64 shadow; in __msan_memcpy() local 188 get_param0_metadata(&shadow, &origin); in __msan_memcpy() 202 set_retval_metadata(shadow, origin); in __msan_memcpy() [all …]
|
D | hooks.c | 156 struct page *shadow, *origin; in kmsan_ioremap_page_range() local 166 shadow = alloc_pages(gfp_mask, 1); in kmsan_ioremap_page_range() 168 if (!shadow || !origin) { in kmsan_ioremap_page_range() 174 vmalloc_shadow(start + off + PAGE_SIZE), prot, &shadow, in kmsan_ioremap_page_range() 180 shadow = NULL; in kmsan_ioremap_page_range() 204 if (shadow) in kmsan_ioremap_page_range() 205 __free_pages(shadow, 1); in kmsan_ioremap_page_range() 224 struct page *shadow, *origin; in kmsan_iounmap_page_range() local 236 shadow = kmsan_vmalloc_to_page_or_null((void *)v_shadow); in kmsan_iounmap_page_range() 240 if (shadow) in kmsan_iounmap_page_range() [all …]
|
/Linux-v6.6/include/linux/ |
D | scx200_gpio.h | 13 #define __SCx200_GPIO_SHADOW unsigned long *shadow = scx200_gpio_shadow+bank 16 #define __SCx200_GPIO_OUT __asm__ __volatile__("outsl":"=mS" (shadow):"d" (ioaddr), "0" (shadow)) 46 set_bit(index, shadow); /* __set_bit()? */ in scx200_gpio_set_high() 57 clear_bit(index, shadow); /* __clear_bit()? */ in scx200_gpio_set_low() 69 set_bit(index, shadow); in scx200_gpio_set() 71 clear_bit(index, shadow); in scx200_gpio_set() 81 change_bit(index, shadow); in scx200_gpio_change()
|
/Linux-v6.6/drivers/gpio/ |
D | gpio-janz-ttl.c | 60 u8 *shadow; in ttl_get_value() local 64 shadow = &mod->porta_shadow; in ttl_get_value() 66 shadow = &mod->portb_shadow; in ttl_get_value() 69 shadow = &mod->portc_shadow; in ttl_get_value() 74 ret = *shadow & BIT(offset); in ttl_get_value() 83 u8 *shadow; in ttl_set_value() local 87 shadow = &mod->porta_shadow; in ttl_set_value() 90 shadow = &mod->portb_shadow; in ttl_set_value() 94 shadow = &mod->portc_shadow; in ttl_set_value() 100 *shadow |= BIT(offset); in ttl_set_value() [all …]
|
D | gpio-mm-lantiq.c | 31 u16 shadow; /* shadow the latches state */ member 47 __raw_writew(chip->shadow, chip->mmchip.regs); in ltq_mm_apply() 65 chip->shadow |= (1 << offset); in ltq_mm_set() 67 chip->shadow &= ~(1 << offset); in ltq_mm_set() 104 u32 shadow; in ltq_mm_probe() local 118 if (!of_property_read_u32(pdev->dev.of_node, "lantiq,shadow", &shadow)) in ltq_mm_probe() 119 chip->shadow = shadow; in ltq_mm_probe()
|
D | gpio-stp-xway.c | 84 u32 shadow; /* shadow the shift registers state */ member 121 chip->shadow |= BIT(gpio); in xway_stp_set() 123 chip->shadow &= ~BIT(gpio); in xway_stp_set() 124 xway_stp_w32(chip->virt, chip->shadow, XWAY_STP_CPU0); in xway_stp_set() 235 u32 shadow, groups, dsl, phy; in xway_stp_probe() local 258 if (!of_property_read_u32(pdev->dev.of_node, "lantiq,shadow", &shadow)) in xway_stp_probe() 259 chip->shadow = shadow; in xway_stp_probe()
|
D | gpio-latch.c | 58 unsigned long *shadow; member 81 assign_bit(offset, priv->shadow, val); in gpio_latch_set_unlocked() 85 test_bit(latch * priv->n_latched_gpios + i, priv->shadow)); in gpio_latch_set_unlocked() 160 priv->shadow = devm_bitmap_zalloc(&pdev->dev, n_latches * priv->n_latched_gpios, in gpio_latch_probe() 162 if (!priv->shadow) in gpio_latch_probe()
|
/Linux-v6.6/fs/nilfs2/ |
D | mdt.c | 475 struct nilfs_shadow_map *shadow = mdi->mi_shadow; in nilfs_mdt_clear() local 480 if (shadow) { in nilfs_mdt_clear() 481 struct inode *s_inode = shadow->inode; in nilfs_mdt_clear() 483 shadow->inode = NULL; in nilfs_mdt_clear() 517 struct nilfs_shadow_map *shadow) in nilfs_mdt_setup_shadow_map() argument 522 INIT_LIST_HEAD(&shadow->frozen_buffers); in nilfs_mdt_setup_shadow_map() 528 shadow->inode = s_inode; in nilfs_mdt_setup_shadow_map() 529 mi->mi_shadow = shadow; in nilfs_mdt_setup_shadow_map() 541 struct nilfs_shadow_map *shadow = mi->mi_shadow; in nilfs_mdt_save_to_shadow_map() local 542 struct inode *s_inode = shadow->inode; in nilfs_mdt_save_to_shadow_map() [all …]
|
/Linux-v6.6/mm/kasan/ |
D | report_sw_tags.c | 51 u8 *shadow; in kasan_get_alloc_size() local 62 shadow = (u8 *)kasan_mem_to_shadow(object); in kasan_get_alloc_size() 64 if (*shadow != KASAN_TAG_INVALID) in kasan_get_alloc_size() 68 shadow++; in kasan_get_alloc_size() 81 u8 *shadow = (u8 *)kasan_mem_to_shadow(addr); in kasan_print_tags() local 83 pr_err("Pointer tag: [%02x], memory tag: [%02x]\n", addr_tag, *shadow); in kasan_print_tags()
|
D | sw_tags.c | 77 u8 *shadow_first, *shadow_last, *shadow; in kasan_check_range() local 113 for (shadow = shadow_first; shadow <= shadow_last; shadow++) { in kasan_check_range() 114 if (*shadow != tag) { in kasan_check_range()
|
D | report_generic.c | 49 u8 *shadow; in kasan_get_alloc_size() local 60 shadow = (u8 *)kasan_mem_to_shadow(object); in kasan_get_alloc_size() 62 if (*shadow == 0) in kasan_get_alloc_size() 64 else if (*shadow >= 1 && *shadow <= KASAN_GRANULE_SIZE - 1) in kasan_get_alloc_size() 65 return size + *shadow; in kasan_get_alloc_size() 68 shadow++; in kasan_get_alloc_size()
|
/Linux-v6.6/drivers/block/ |
D | xen-blkfront.c | 190 struct blk_shadow shadow[]; member 291 rinfo->shadow_free = rinfo->shadow[free].req.u.rw.id; in get_id_from_freelist() 292 rinfo->shadow[free].req.u.rw.id = 0x0fffffee; /* debug */ in get_id_from_freelist() 299 if (rinfo->shadow[id].req.u.rw.id != id) in add_id_to_freelist() 301 if (rinfo->shadow[id].request == NULL) in add_id_to_freelist() 303 rinfo->shadow[id].req.u.rw.id = rinfo->shadow_free; in add_id_to_freelist() 304 rinfo->shadow[id].request = NULL; in add_id_to_freelist() 543 rinfo->shadow[id].request = req; in blkif_ring_get_request() 544 rinfo->shadow[id].status = REQ_PROCESSING; in blkif_ring_get_request() 545 rinfo->shadow[id].associated_id = NO_ASSOCIATED_ID; in blkif_ring_get_request() [all …]
|
/Linux-v6.6/mm/ |
D | workingset.c | 209 static void unpack_shadow(void *shadow, int *memcgidp, pg_data_t **pgdat, in unpack_shadow() argument 212 unsigned long entry = xa_to_value(shadow); in unpack_shadow() 262 static bool lru_gen_test_recent(void *shadow, bool file, struct lruvec **lruvec, in lru_gen_test_recent() argument 270 unpack_shadow(shadow, &memcg_id, &pgdat, token, workingset); in lru_gen_test_recent() 279 static void lru_gen_refault(struct folio *folio, void *shadow) in lru_gen_refault() argument 292 recent = lru_gen_test_recent(shadow, type, &lruvec, &token, &workingset); in lru_gen_refault() 333 static bool lru_gen_test_recent(void *shadow, bool file, struct lruvec **lruvec, in lru_gen_test_recent() argument 339 static void lru_gen_refault(struct folio *folio, void *shadow) in lru_gen_refault() argument 417 bool workingset_test_recent(void *shadow, bool file, bool *workingset) in workingset_test_recent() argument 429 return lru_gen_test_recent(shadow, file, &eviction_lruvec, &eviction, workingset); in workingset_test_recent() [all …]
|
/Linux-v6.6/Documentation/dev-tools/ |
D | kmsan.rst | 95 incorrect shadow/origin values, likely leading to false positives. Functions 125 KMSAN shadow memory 128 KMSAN associates a metadata byte (also called shadow byte) with every byte of 129 kernel memory. A bit in the shadow byte is set iff the corresponding bit of the 131 setting its shadow bytes to ``0xff``) is called poisoning, marking it 132 initialized (setting the shadow bytes to ``0x00``) is called unpoisoning. 139 Compiler instrumentation also tracks the shadow values as they are used along 141 ``mm/kmsan/`` to persist shadow values. 143 The shadow value of a basic or compound type is an array of bytes of the same 145 When a value is read from memory, its shadow memory is also obtained and [all …]
|
/Linux-v6.6/drivers/ps3/ |
D | ps3-lpm.c | 128 struct ps3_lpm_shadow_regs shadow; member 394 return lpm_priv->shadow.pm_control; in ps3_read_pm() 398 return lpm_priv->shadow.pm_start_stop; in ps3_read_pm() 409 return lpm_priv->shadow.group_control; in ps3_read_pm() 411 return lpm_priv->shadow.debug_bus_control; in ps3_read_pm() 446 if (val != lpm_priv->shadow.group_control) in ps3_write_pm() 451 lpm_priv->shadow.group_control = val; in ps3_write_pm() 454 if (val != lpm_priv->shadow.debug_bus_control) in ps3_write_pm() 459 lpm_priv->shadow.debug_bus_control = val; in ps3_write_pm() 465 if (val != lpm_priv->shadow.pm_control) in ps3_write_pm() [all …]
|
/Linux-v6.6/samples/livepatch/ |
D | Makefile | 3 obj-$(CONFIG_SAMPLE_LIVEPATCH) += livepatch-shadow-mod.o 4 obj-$(CONFIG_SAMPLE_LIVEPATCH) += livepatch-shadow-fix1.o 5 obj-$(CONFIG_SAMPLE_LIVEPATCH) += livepatch-shadow-fix2.o
|
/Linux-v6.6/drivers/gpu/drm/amd/amdgpu/ |
D | amdgpu_vm_sdma.c | 44 if (table->shadow) in amdgpu_vm_sdma_map_table() 45 r = amdgpu_ttm_alloc_gart(&table->shadow->tbo); in amdgpu_vm_sdma_map_table() 267 if (vmbo->shadow) in amdgpu_vm_sdma_update() 268 amdgpu_vm_sdma_set_ptes(p, vmbo->shadow, pe, addr, in amdgpu_vm_sdma_update() 277 (vmbo->shadow ? 2 : 1); in amdgpu_vm_sdma_update() 292 if (vmbo->shadow) in amdgpu_vm_sdma_update() 293 amdgpu_vm_sdma_copy_ptes(p, vmbo->shadow, pe, nptes); in amdgpu_vm_sdma_update()
|
/Linux-v6.6/drivers/usb/host/ |
D | xen-hcd.c | 84 struct usb_shadow shadow[XENUSB_URB_RING_SIZE]; member 565 info->shadow_free = info->shadow[free].req.id; in xenhcd_get_id_from_freelist() 566 info->shadow[free].req.id = 0x0fff; /* debug */ in xenhcd_get_id_from_freelist() 573 info->shadow[id].req.id = info->shadow_free; in xenhcd_add_id_to_freelist() 574 info->shadow[id].urb = NULL; in xenhcd_add_id_to_freelist() 718 struct usb_shadow *shadow = info->shadow + id; in xenhcd_gnttab_done() local 722 if (!shadow->in_flight) { in xenhcd_gnttab_done() 726 shadow->in_flight = false; in xenhcd_gnttab_done() 728 nr_segs = shadow->req.nr_buffer_segs; in xenhcd_gnttab_done() 730 if (xenusb_pipeisoc(shadow->req.pipe)) in xenhcd_gnttab_done() [all …]
|