Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag '6.1-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull cifs fixes from Steve French:

- use after free fix for reconnect race

- two memory leak fixes

* tag '6.1-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
cifs: fix use-after-free caused by invalid pointer `hostname`
cifs: Fix pages leak when writedata alloc failed in cifs_write_from_iter()
cifs: Fix pages array leak when writedata alloc failed in cifs_writedata_alloc()

+11 -3
+1
fs/cifs/connect.c
··· 1584 1584 server->session_key.response = NULL; 1585 1585 server->session_key.len = 0; 1586 1586 kfree(server->hostname); 1587 + server->hostname = NULL; 1587 1588 1588 1589 task = xchg(&server->tsk, NULL); 1589 1590 if (task)
+10 -3
fs/cifs/file.c
··· 2434 2434 struct cifs_writedata * 2435 2435 cifs_writedata_alloc(unsigned int nr_pages, work_func_t complete) 2436 2436 { 2437 + struct cifs_writedata *writedata = NULL; 2437 2438 struct page **pages = 2438 2439 kcalloc(nr_pages, sizeof(struct page *), GFP_NOFS); 2439 - if (pages) 2440 - return cifs_writedata_direct_alloc(pages, complete); 2440 + if (pages) { 2441 + writedata = cifs_writedata_direct_alloc(pages, complete); 2442 + if (!writedata) 2443 + kvfree(pages); 2444 + } 2441 2445 2442 - return NULL; 2446 + return writedata; 2443 2447 } 2444 2448 2445 2449 struct cifs_writedata * ··· 3303 3299 cifs_uncached_writev_complete); 3304 3300 if (!wdata) { 3305 3301 rc = -ENOMEM; 3302 + for (i = 0; i < nr_pages; i++) 3303 + put_page(pagevec[i]); 3304 + kvfree(pagevec); 3306 3305 add_credits_and_wake_if(server, credits, 0); 3307 3306 break; 3308 3307 }