*
  * * ``/sys/kernel/dmabuf/buffers/<inode_number>/exporter_name``
  * * ``/sys/kernel/dmabuf/buffers/<inode_number>/size``
- * * ``/sys/kernel/dmabuf/buffers/<inode_number>/attachments/<attach_uid>/device``
- * * ``/sys/kernel/dmabuf/buffers/<inode_number>/attachments/<attach_uid>/map_counter``
  *
- * The information in the interface can also be used to derive per-exporter and
- * per-device usage statistics. The data from the interface can be gathered
- * on error conditions or other important events to provide a snapshot of
- * DMA-BUF usage. It can also be collected periodically by telemetry to monitor
- * various metrics.
+ * The information in the interface can also be used to derive per-exporter
+ * statistics. The data from the interface can be gathered on error conditions
+ * or other important events to provide a snapshot of DMA-BUF usage.
+ * It can also be collected periodically by telemetry to monitor various metrics.
  *
  * Detailed documentation about the interface is present in
  * Documentation/ABI/testing/sysfs-kernel-dmabuf-buffers.
        .default_groups = dma_buf_stats_default_groups,
 };
 
-#define to_dma_buf_attach_entry_from_kobj(x) container_of(x, struct dma_buf_attach_sysfs_entry, kobj)
-
-struct dma_buf_attach_stats_attribute {
-       struct attribute attr;
-       ssize_t (*show)(struct dma_buf_attach_sysfs_entry *sysfs_entry,
-                       struct dma_buf_attach_stats_attribute *attr, char *buf);
-};
-#define to_dma_buf_attach_stats_attr(x) container_of(x, struct dma_buf_attach_stats_attribute, attr)
-
-static ssize_t dma_buf_attach_stats_attribute_show(struct kobject *kobj,
-                                                  struct attribute *attr,
-                                                  char *buf)
-{
-       struct dma_buf_attach_stats_attribute *attribute;
-       struct dma_buf_attach_sysfs_entry *sysfs_entry;
-
-       attribute = to_dma_buf_attach_stats_attr(attr);
-       sysfs_entry = to_dma_buf_attach_entry_from_kobj(kobj);
-
-       if (!attribute->show)
-               return -EIO;
-
-       return attribute->show(sysfs_entry, attribute, buf);
-}
-
-static const struct sysfs_ops dma_buf_attach_stats_sysfs_ops = {
-       .show = dma_buf_attach_stats_attribute_show,
-};
-
-static ssize_t map_counter_show(struct dma_buf_attach_sysfs_entry *sysfs_entry,
-                               struct dma_buf_attach_stats_attribute *attr,
-                               char *buf)
-{
-       return sysfs_emit(buf, "%u\n", sysfs_entry->map_counter);
-}
-
-static struct dma_buf_attach_stats_attribute map_counter_attribute =
-       __ATTR_RO(map_counter);
-
-static struct attribute *dma_buf_attach_stats_default_attrs[] = {
-       &map_counter_attribute.attr,
-       NULL,
-};
-ATTRIBUTE_GROUPS(dma_buf_attach_stats_default);
-
-static void dma_buf_attach_sysfs_release(struct kobject *kobj)
-{
-       struct dma_buf_attach_sysfs_entry *sysfs_entry;
-
-       sysfs_entry = to_dma_buf_attach_entry_from_kobj(kobj);
-       kfree(sysfs_entry);
-}
-
-static struct kobj_type dma_buf_attach_ktype = {
-       .sysfs_ops = &dma_buf_attach_stats_sysfs_ops,
-       .release = dma_buf_attach_sysfs_release,
-       .default_groups = dma_buf_attach_stats_default_groups,
-};
-
-void dma_buf_attach_stats_teardown(struct dma_buf_attachment *attach)
-{
-       struct dma_buf_attach_sysfs_entry *sysfs_entry;
-
-       sysfs_entry = attach->sysfs_entry;
-       if (!sysfs_entry)
-               return;
-
-       sysfs_delete_link(&sysfs_entry->kobj, &attach->dev->kobj, "device");
-
-       kobject_del(&sysfs_entry->kobj);
-       kobject_put(&sysfs_entry->kobj);
-}
-
-int dma_buf_attach_stats_setup(struct dma_buf_attachment *attach,
-                              unsigned int uid)
-{
-       struct dma_buf_attach_sysfs_entry *sysfs_entry;
-       int ret;
-       struct dma_buf *dmabuf;
-
-       if (!attach)
-               return -EINVAL;
-
-       dmabuf = attach->dmabuf;
-
-       sysfs_entry = kzalloc(sizeof(struct dma_buf_attach_sysfs_entry),
-                             GFP_KERNEL);
-       if (!sysfs_entry)
-               return -ENOMEM;
-
-       sysfs_entry->kobj.kset = dmabuf->sysfs_entry->attach_stats_kset;
-
-       attach->sysfs_entry = sysfs_entry;
-
-       ret = kobject_init_and_add(&sysfs_entry->kobj, &dma_buf_attach_ktype,
-                                  NULL, "%u", uid);
-       if (ret)
-               goto kobj_err;
-
-       ret = sysfs_create_link(&sysfs_entry->kobj, &attach->dev->kobj,
-                               "device");
-       if (ret)
-               goto link_err;
-
-       return 0;
-
-link_err:
-       kobject_del(&sysfs_entry->kobj);
-kobj_err:
-       kobject_put(&sysfs_entry->kobj);
-       attach->sysfs_entry = NULL;
-
-       return ret;
-}
 void dma_buf_stats_teardown(struct dma_buf *dmabuf)
 {
        struct dma_buf_sysfs_entry *sysfs_entry;
        if (!sysfs_entry)
                return;
 
-       kset_unregister(sysfs_entry->attach_stats_kset);
        kobject_del(&sysfs_entry->kobj);
        kobject_put(&sysfs_entry->kobj);
 }
 {
        struct dma_buf_sysfs_entry *sysfs_entry;
        int ret;
-       struct kset *attach_stats_kset;
 
        if (!dmabuf || !dmabuf->file)
                return -EINVAL;
        if (ret)
                goto err_sysfs_dmabuf;
 
-       /* create the directory for attachment stats */
-       attach_stats_kset = kset_create_and_add("attachments",
-                                               &dmabuf_sysfs_no_uevent_ops,
-                                               &sysfs_entry->kobj);
-       if (!attach_stats_kset) {
-               ret = -ENOMEM;
-               goto err_sysfs_attach;
-       }
-
-       sysfs_entry->attach_stats_kset = attach_stats_kset;
-
        return 0;
 
-err_sysfs_attach:
-       kobject_del(&sysfs_entry->kobj);
 err_sysfs_dmabuf:
        kobject_put(&sysfs_entry->kobj);
        dmabuf->sysfs_entry = NULL;
 
 void dma_buf_uninit_sysfs_statistics(void);
 
 int dma_buf_stats_setup(struct dma_buf *dmabuf);
-int dma_buf_attach_stats_setup(struct dma_buf_attachment *attach,
-                              unsigned int uid);
-static inline void dma_buf_update_attachment_map_count(struct dma_buf_attachment *attach,
-                                                      int delta)
-{
-       struct dma_buf_attach_sysfs_entry *entry = attach->sysfs_entry;
 
-       entry->map_counter += delta;
-}
 void dma_buf_stats_teardown(struct dma_buf *dmabuf);
-void dma_buf_attach_stats_teardown(struct dma_buf_attachment *attach);
-static inline unsigned int dma_buf_update_attach_uid(struct dma_buf *dmabuf)
-{
-       struct dma_buf_sysfs_entry *entry = dmabuf->sysfs_entry;
-
-       return entry->attachment_uid++;
-}
 #else
 
 static inline int dma_buf_init_sysfs_statistics(void)
 {
        return 0;
 }
-static inline int dma_buf_attach_stats_setup(struct dma_buf_attachment *attach,
-                                            unsigned int uid)
-{
-       return 0;
-}
 
 static inline void dma_buf_stats_teardown(struct dma_buf *dmabuf) {}
-static inline void dma_buf_attach_stats_teardown(struct dma_buf_attachment *attach) {}
-static inline void dma_buf_update_attachment_map_count(struct dma_buf_attachment *attach,
-                                                      int delta) {}
-static inline unsigned int dma_buf_update_attach_uid(struct dma_buf *dmabuf)
-{
-       return 0;
-}
 #endif
 #endif // _DMA_BUF_SYSFS_STATS_H
 
 {
        struct dma_buf_attachment *attach;
        int ret;
-       unsigned int attach_uid;
 
        if (WARN_ON(!dmabuf || !dev))
                return ERR_PTR(-EINVAL);
        }
        dma_resv_lock(dmabuf->resv, NULL);
        list_add(&attach->node, &dmabuf->attachments);
-       attach_uid = dma_buf_update_attach_uid(dmabuf);
        dma_resv_unlock(dmabuf->resv);
 
-       ret = dma_buf_attach_stats_setup(attach, attach_uid);
-       if (ret)
-               goto err_sysfs;
-
        /* When either the importer or the exporter can't handle dynamic
         * mappings we cache the mapping here to avoid issues with the
         * reservation object lock.
                        dma_resv_unlock(attach->dmabuf->resv);
                attach->sgt = sgt;
                attach->dir = DMA_BIDIRECTIONAL;
-               dma_buf_update_attachment_map_count(attach, 1 /* delta */);
        }
 
        return attach;
        if (dma_buf_is_dynamic(attach->dmabuf))
                dma_resv_unlock(attach->dmabuf->resv);
 
-err_sysfs:
        dma_buf_detach(dmabuf, attach);
        return ERR_PTR(ret);
 }
                        dma_resv_lock(attach->dmabuf->resv, NULL);
 
                __unmap_dma_buf(attach, attach->sgt, attach->dir);
-               dma_buf_update_attachment_map_count(attach, -1 /* delta */);
 
                if (dma_buf_is_dynamic(attach->dmabuf)) {
                        dmabuf->ops->unpin(attach);
        if (dmabuf->ops->detach)
                dmabuf->ops->detach(dmabuf, attach);
 
-       dma_buf_attach_stats_teardown(attach);
        kfree(attach);
 }
 EXPORT_SYMBOL_GPL(dma_buf_detach);
                }
        }
 #endif /* CONFIG_DMA_API_DEBUG */
-
-       if (!IS_ERR(sg_table))
-               dma_buf_update_attachment_map_count(attach, 1 /* delta */);
-
        return sg_table;
 }
 EXPORT_SYMBOL_GPL(dma_buf_map_attachment);
        if (dma_buf_is_dynamic(attach->dmabuf) &&
            !IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY))
                dma_buf_unpin(attach);
-
-       dma_buf_update_attachment_map_count(attach, -1 /* delta */);
 }
 EXPORT_SYMBOL_GPL(dma_buf_unmap_attachment);