{
  "cveId": "CVE-2021-47585",
  "url": "https://patchblox.com/security/cve/CVE-2021-47585",
  "summary": "CVE-2021-47585 is fixed in linux on 1 platform, first by DEBIAN-CVE-2021-47585, released June 19, 2024. It is not reported as exploited. Patch Radar priority: Routine.",
  "title": "linux: In the Linux kernel, the following vulnerability has been resolved:  btrfs: fix memory leak in __add_inode_ref()  Lin...",
  "description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: fix memory leak in __add_inode_ref()  Line 1169 (#3) allocates a memory chunk for victim_name by kmalloc(), but  when the function returns in line 1184 (#4) victim_name allocated by line 1169 (#3) is not freed, which will lead to a memory leak. There is a similar snippet of code in this function as allocating a memory chunk for victim_name in line 1104 (#1) as well as releasing the memory in line 1116 (#2).  We should kfree() victim_name when the return value of backref_in_log() is less than zero and before the function returns in line 1184 (#4).  1057 static inline int __add_inode_ref(struct btrfs_trans_handle *trans, 1058 \t\t\t\t  struct btrfs_root *root, 1059 \t\t\t\t  struct btrfs_path *path, 1060 \t\t\t\t  struct btrfs_root *log_root, 1061 \t\t\t\t  struct btrfs_inode *dir, 1062 \t\t\t\t  struct btrfs_inode *inode, 1063 \t\t\t\t  u64 inode_objectid, u64 parent_objectid, 1064 \t\t\t\t  u64 ref_index, char *name, int namelen, 1065 \t\t\t\t  int *search_done) 1066 {  1104 \tvictim_name = kmalloc(victim_name_len, GFP_NOFS); \t// #1: kmalloc (victim_name-1) 1105 \tif (!victim_name) 1106 \t\treturn -ENOMEM;  1112\tret = backref_in_log(log_root, \u0026search_key, 1113\t\t\tparent_objectid, victim_name, 1114\t\t\tvictim_name_len); 1115\tif (ret \u003C 0) { 1116\t\tkfree(victim_name); // #2: kfree (victim_name-1) 1117\t\treturn ret; 1118\t} else if (!ret) {  1169 \tvictim_name = kmalloc(victim_name_len, GFP_NOFS); \t// #3: kmalloc (victim_name-2) 1170 \tif (!victim_name) 1171 \t\treturn -ENOMEM;  1180 \tret = backref_in_log(log_root, \u0026search_key, 1181 \t\t\tparent_objectid, victim_name, 1182 \t\t\tvictim_name_len); 1183 \tif (ret \u003C 0) { 1184 \t\treturn ret; // #4: missing kfree (victim_name-2) 1185 \t} else if (!ret) {  1241 \treturn 0; 1242 }",
  "published": "2024-06-19T15:15:53Z",
  "severity": "medium",
  "cvss": 5.5,
  "cvssVector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
  "epss": 0.0025,
  "epssPercentile": 0.16399,
  "priority": "Routine",
  "priorityTier": 4,
  "exploited": false,
  "vendorExploited": false,
  "disclosed": false,
  "fixes": [
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 12.15 (bookworm)",
      "fixedVersion": "5.15.15-1",
      "fix": "DEBIAN-CVE-2021-47585",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2021-47585",
      "released": "2024-06-19T15:15:53Z"
    },
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 13.5 (trixie)",
      "fixedVersion": "5.15.15-1",
      "fix": "DEBIAN-CVE-2021-47585",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2021-47585",
      "released": "2024-06-19T15:15:53Z"
    },
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 14",
      "fixedVersion": "5.15.15-1",
      "fix": "DEBIAN-CVE-2021-47585",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2021-47585",
      "released": "2024-06-19T15:15:53Z"
    }
  ],
  "noFixYet": [],
  "dataAsOf": "2026-11-08T06:59:42Z",
  "attribution": {
    "text": "Data: Patchblox Patch Radar",
    "url": "https://patchblox.com/security/patch-radar",
    "terms": "https://patchblox.com/security/patch-radar/use-the-data"
  }
}